展开全部
其实只要算出第i行第j列的数是第几个数就行了(数的排列规律应该能看出来吧)
第i行第j列的数在第(i+j)条对角线上(从零开始),前面就有i+j条对角线
数的个数就是1+2+...+(i+j),在加上同一条对角线上前面的数的个数为j
所以公式就出来了 代码如下,请采纳
class Main
{
public static void main(String[] args)
{
for(int i=0;i<5;i++)
{
for(int j=0;j<5-i;j++)
{
int n = (1+i+j)*(i+j)/2+j+1;
System.out.print(n+" ");
}
System.out.println();
}
}
}
2015-05-03
展开全部
public class Test {
public static void main(String[] args) {
int x = 1; //x代表行,从第一行第一个数1开始
for(int i = 1 ; i <= 5 ; i ++ ) {
int y = x;//y代表列,每行第一个数
System.out.print(x + " ");//打印每行第一个数
for(int j = i; j < 5 ; j ++) {
/**
* 1(+2) 3(+3) 6(+4) 10(+5) 15
* y(j+1) y(j+1) y(j+1) y(j+1)
* j = i ,行数增加,列数减少.
*/
y += j + 1;
System.out.print(y + " ");
}
System.out.println();
/**
* 1(x) + 1(i)
* 2(x) + 2(i)
* 4(x) + 3(i)
* 7(x) + 4(i)
* 11(x) + 5(i)
*
* 每下一行的第一个数 = 当前行的第一个数 + 行数i
* 在行数 i ++ 之前,得到下一行第一个数 x = x + i;
*/
x += i;
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public class Test
{
public static void main(String[] args) {
for(int i=0;i<5;i++){
for(int j=0;j<5-i;j++){
int n = (1+i+j)*(i+j)/2+j+1;
System.out.print(n+" ");
}
System.out.println();
}
}
}
{
public static void main(String[] args) {
for(int i=0;i<5;i++){
for(int j=0;j<5-i;j++){
int n = (1+i+j)*(i+j)/2+j+1;
System.out.print(n+" ");
}
System.out.println();
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询