求java算法实现,比较简单,看大家有没有优化的! 1、for(int i=0;i++,i<4){ for(int j=0,j++,j<4) if j<i then print(j) else print(i) println("") } 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 第三个只提供一个思路,1^表示1的平方。以4 个数为例; 0^+1 1^+1 2^+1 3^+1 2^ 1^+2 2^+2 3^+2 3^ 3^-1 2^+3 3^+3 4^ 4^-1 4^-2 3^+4不难看出在* * * *这样的矩阵里是有规律可循的,就是 * * * * * *for(i=0,i++,i<4) for(j=0,j++,j<4) i^+j+1而在剩余的矩阵里存在的规律是(i+1)-j 第2个对 原数列做一次变换即凡是i+j为偶数的做对角的调换如下: 1 2 4 7 3 5 8 11 6 9 12 14 10 13 15 16第一行为1,2,4,7,相邻数之间的差值为1,2,3是依次递增的,所以可以很快确定第一行的数,将上面的数列还是分为两个半角矩阵,如下: 1 2 4 7 3 5 8 6 9 10这个矩阵可以通过1,2,4,7得到规律是 取其坐标i,j,如果i+j与1,2,4,7中任意一个的坐标相等则取出这个数+他们的j坐标的差值就是了,比如6吧,他的i=2,j=0,则可以去出4的i=0,j=2,坐标和相等,用4+4[j]-6[j]=6了,下半个矩阵规律差不多,再按上面的变换做个逆变换,就能打印了。 4.int n = 4;int cols = 2 * n - 1;for(int i=0; i<n; i++){ for(int j=0; j<cols; j++) { if(j < n) { if(j > (n - i - 2)) System.out.print(j - (n - i) + 2); else System.out.print(' '); } else { if((j - n) < i) System.out.print(i + n - j); else System.out.print(' '); } } System.out.println();} 第一个:for (i=0;i<4 ;i++ ){ for (j=0;j<4 ;j++ ) { if (j>i) { System.out.println("("+i+")"); } else { System.out.println("("+j+")"); } }}对不对 有四个都搞定的没有给我发邮件[email protected] 2.//计算每条斜线上的最小值:1 2 4 7 11 14 16int[] minValues = new int[2 * n - 1];minValues[0] = 0;for(int i =1; i<minValues.length; i++){ if(i <= n) minValues[i] = minValues[i - 1] + i; else minValues[i] = minValues[i - 1] + minValues.length - i + 1;}for(int i=0; i<n; i++){ for(int j=0; j<n; j++) { //计算当前位置的值相对于所在斜线最小值的偏移 int offset = 0; if(((i + j) & 1) != 0) { if (i + j < n) offset = i; else offset = n - j - 1; } else { if (i + j < n) offset = j; else offset = n - i - 1; } int value = minValues[i+j] + offset + 1; System.out.print(value); if(value < 10) System.out.print(' '); System.out.print(' '); }} 3.int n = 4;for(int i=0; i<n; i++){ for(int j=0; j<n; j++) { int value = 0; if(j > i) value = j * j + i; else value = (i+1) * (i+1) - j; System.out.print(value); if(value < 10) System.out.print(' '); System.out.print(' '); } System.out.println();} JAVA私塾居然这么对我,大家进来看看认清他! JTable显示数据库图片的问题 急,序列号限数问题 一个方法的修饰符写“protected”和不写有什么区别吗? 那里有Sun.Java.Studio.Entreprise.6.0企业版的下载呀??????????? 远程服务器上的文件下载,在线等 为什么不能运行? 大家说我们现在学一下Linux对我们的工作有帮助吗? java 运行程序的问题? 问个java2核心技术例子中的一个问题(RMI) 请热心的朋友帮我详细解答一下数组的问题。。。我分开来问。方便回答 问题:关于线程的问题!!!!!!!!!!
0^+1 1^+1 2^+1 3^+1
2^ 1^+2 2^+2 3^+2
3^ 3^-1 2^+3 3^+3
4^ 4^-1 4^-2 3^+4
不难看出在* * * *这样的矩阵里是有规律可循的,就是
* * *
* *
*
for(i=0,i++,i<4)
for(j=0,j++,j<4)
i^+j+1
而在剩余的矩阵里存在的规律是(i+1)-j
如下: 1 2 4 7
3 5 8 11
6 9 12 14
10 13 15 16
第一行为1,2,4,7,相邻数之间的差值为1,2,3是依次递增的,所以可以很快确定第一行的数,将上面的数列还是分为两个半角矩阵,如下:
1 2 4 7
3 5 8
6 9
10
这个矩阵可以通过1,2,4,7得到
规律是 取其坐标i,j,如果i+j与1,2,4,7中任意一个的坐标相等则取出这个数+他们的j坐标的差值就是了,比如6吧,他的i=2,j=0,则可以去出4的i=0,j=2,坐标和相等,用4+4[j]-6[j]=6了,下半个矩阵规律差不多,再按上面的变换做个逆变换,就能打印了。
for(int i=0; i<n; i++)
{
for(int j=0; j<cols; j++)
{
if(j < n)
{
if(j > (n - i - 2))
System.out.print(j - (n - i) + 2);
else
System.out.print(' ');
}
else
{
if((j - n) < i)
System.out.print(i + n - j);
else
System.out.print(' ');
}
}
System.out.println();
}
for (i=0;i<4 ;i++ )
{
for (j=0;j<4 ;j++ )
{
if (j>i)
{
System.out.println("("+i+")");
}
else
{
System.out.println("("+j+")");
}
}
}
对不对
给我发邮件
[email protected]
int[] minValues = new int[2 * n - 1];
minValues[0] = 0;
for(int i =1; i<minValues.length; i++)
{
if(i <= n)
minValues[i] = minValues[i - 1] + i;
else
minValues[i] = minValues[i - 1] + minValues.length - i + 1;
}for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
{
//计算当前位置的值相对于所在斜线最小值的偏移
int offset = 0;
if(((i + j) & 1) != 0)
{
if (i + j < n)
offset = i;
else
offset = n - j - 1;
}
else
{
if (i + j < n)
offset = j;
else
offset = n - i - 1;
} int value = minValues[i+j] + offset + 1;
System.out.print(value);
if(value < 10)
System.out.print(' ');
System.out.print(' ');
}
}
int n = 4;for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
{
int value = 0;
if(j > i)
value = j * j + i;
else
value = (i+1) * (i+1) - j; System.out.print(value);
if(value < 10)
System.out.print(' ');
System.out.print(' ');
}
System.out.println();
}