谁可以用JAVA程序来编写这个题目啊?急啊。。。 “当=4,输出方阵1 2 6 7 3 5 8 13 4 9 12 14 10 11 15 16

谁可以用JAVA程序来编写这个题目啊?急啊。“当n=4,输出如下方阵1 2 6 7
3 5 8 13
4 9 12 14
10 11 15 16

上面的程序错了
public class T{
public static void main(String[] args){
int n=4;//可以修改
int n2=n*n;
int[][] arr=new int[n][n];
for(int i=0;i<n;i++){
if(i%2==0)arr[0][i]=(i+1)*(i+2)/2;
else arr[0][i]=arr[0][i-1]+1;
}
for(int i=1;i<n;i++){
int num=arr[0][i];
if(i%2!=0)
for(int j=1;j<=i;j++){
arr[j][i-j]=++num;
}
else for(int j=1;j<=i;j++){
arr[j][i-j]=--num;
}
}
for(int i=0;i<n-1;i++){
int num=n2+1-arr[0][i];
arr[n-1][n-i-1]=num;
if(i%2==0)
for(int j=1;j<i+1;j++){
arr[n-j-1][n-i-1+j]=++num;
}
else for(int j=1;j<i+1;j++){
arr[n-j-1][n-i-1+j]=--num;
}
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++)
System.out.print(arr[i][j]+"\t");
System.out.println();
}
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-09-03
int n=4;
int[][] matrix = new int[n][n];
int num = 1;
for (int i=2;i<n*2;i++){
int count = n - Math.abs(n - i) - 1;
if (i % 2 == 0){
for (int j=count;j>=1;j--){
if (i>n){
matrix[n-j+1][i-n+j-1] = num++;
}else{
matrix[j][i-j] = num++;
}
}
}else{
for (int j=1;j<=count;j++){
if (i>n){
matrix[n-j+1][i-n+j-1] = num++;
}else{
matrix[j][i-j] = num++;
}
}
}
}
第2个回答  2010-09-03
给点分吧哥们

谁可以用JAVA程序来编写这个题目啊?急啊。。。 “当=4,输出方阵1 2 6...
上面的程序错了 public class T{ public static void main(String[] args){ int n=4;\/\/可以修改 int n2=n*n;int[][] arr=new int[n][n];for(int i=0;i<n;i++){ if(i%2==0)arr[0][i]=(i+1)*(i+2)\/2;else arr[0][i]=arr[0][i-1]+1;} for(int i=1;i<n;...

...=4时,输出如下形式的方阵: 1 2 6 7 3 5 8 13 4 9 12 14 10 11 15...
define N 4 void main(){ int a[N][N]={ {1,2,6,7}, {3,5,8,13},{4,9,12,14},{10,11,15,16}};int i,j;for(i=0;i<N;i++){ for(j=0;j<N;j++)printf("%4d",a[i][j]);printf("\\n");} printf("\\n");} 已运行通过 ...

编写程序,使用循环结构,输出: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
include <stdio.h> int main(void){ int i = 0;while (1){ printf("%d ", ++i);if (i == 15)break;} return 0;}

java问题。输出结果是0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17...
public static void main(String[] args){ int Co=30; \/\/排序到多少位?int[][] Arr=new int[5][]; \/\/定义不规则数组 int integer=0;\/\/用来计数的 for (int i = 0; i < 5; i++) { Arr[i] =new int[Co\/5];for (int j = 0; j < Co\/5; j++) { Arr[i][j]=...

用java编写:以下5道题目 1.有一个整数数组,其中存放着序列1,3,5,7,
Integer[] s = {1,3,5,7,9,11,13,15,17,19};Comparator cmp = new MyComparator();Arrays.sort(s, cmp);for(Integer i:s){ System.out.println(i);} } static class MyComparator implements Comparator<Integer> { Override public int compare(Integer o1, Integer o2) { return o2 ...

...a[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}{13,14,15,16}},输出...
, i+1, sum \/ 4.0);} system("pause");return (0);} 运行结果如下:您的程序。。{int a[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12} , {13,14,15,16}};\/\/这里少了一个逗号,在12的括号后面。。float sum;aver; \/\/ 这里是用逗号隔开的。。float sum, aver;...

...{ int a[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}; in...
main( ){ int a[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};int i,j,sum=__0___ ;for(i=0; i<4; i++){ for(j=0; j<4; j++){ printf("%3d",_a[i][j] );} printf("\\n");} for(i=0; i<4; i++)sum+=_5*i+1__;printf("sum=%...

...a[5][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17},
p=a; p的起始地址为100H printf("%x\\n",*(p+2)) ; 输出*(p+2)的地址 (%x表示输出地址)p表示 a[0][0]的地址 (p+2)表示 a[2][0]的地址 a[2][0]的值是 9 int 类型的大小为4H 所以a[2][0]的地址是 100+4*9 - 4 = 132H 所以输出结果为132H ...

...3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 2
(3)假设横着能框出和是60的三个数,设最小的数为x,则其它的数分别是x+1,x+2,x+x+1+x+2=60, 3x+3=60, 3x=57, x=19,所以,19+20+21=60,但19和20在一行的结尾,而21在下一行的开始,所以,用长方形框去横着框不到19、20与21三个数;假设竖着能框出和是60的三个数,...

如图1 2 3 4 5 6 7 8 9 10 11 12 13 1415 16 ①第N行第一个是?②第N...
①(n-1)²+1。其实一楼的答案也对,就是化简过的。②解释下:每一行都是等差数列(差一),也就是说和是首项加末项乘以项数除以二 第一题已经求出了第N行的第一个数,也就是首项。至于末项,就是首项加上行数乘以二再减二。用字母表示的话,就是 首项:(n-1)²+1 ...

相似回答