logo资料库

java 循环比赛日程表 附有结果.doc

第1页 / 共2页
第2页 / 共2页
资料共2页,全文预览结束
Java 循环比赛日程表 附有结果 //输出表格 a[i][j](i =1,2,…,n;j=2,3,…,n)表示第 i 号选手在第 j-1 天的对手 public class CirCompete { public void Table(int k,int[][]a){ int n=1; for(int i=1;i<=k;i++){//假设 n k 2 个运动员要进行循环比赛 n *=2; //通过 k 计算 n 值,实际是通过参赛人数计算出 k 值的 } for(int i=1;i<=n;i++){ a[1][i]=i; //打印出第一行即选手 1 的赛程表 } int m=1;//控制每次填充表格 i(i 表示行)和 j(j 表示列)的起始填充位置 for(int s=1;s<=k;s++){ n/=2;//将问题分成 k 部分 for(int t=1;t<=n;t++) {//对每一部分进行划分 for(int i=m+1;i<=2*m;i++){ //控制行 for(int j=m+1;j<=2*m;j++){//控制列 上角 上角 a[i][j +(t - 1) * m *2] = a[i - m][j + (t - 1) * m * 2 - m];//右下角等于左 a[i][j + (t - 1) * m * 2 -m] = a[i - m][j + (t - 1) * m * 2];//左下角等于右 } } } m*=2; } } public static void main(String[] args) { CirCompete circompete = new CirCompete(); int[][] a=new int[9][9]; circompete.Table(3,a);//求 n 23  8 个选手时候的比赛日程表 for(int i=1;i<9;i++) { for(int j=1;j<9;j++) { System.out.print(a[i][j]+" "); System.out.println(); } }} } 运行结果: 1 2 3 4 5 6 7 8 2 1 4 3 6 5 8 7 3 4 1 2 7 8 5 6 4 3 2 1 8 7 6 5
5 6 7 8 1 2 3 4 6 5 8 7 2 1 4 3 7 8 5 6 3 4 1 2 8 7 6 5 4 3 2 1
分享到:
收藏