以下是朋友的段考題, 朋友來(lái)問(wèn)我我就幫他解了一下.
Problem
假設(shè)使用者輸入3
, 電腦會(huì)印出:
123
312
231
現(xiàn)在使用者輸入5
, 則電腦會(huì)印出這些東西:
12345
51234
45123
34512
23451
然後再推廣到n
Solution
一開始第一個(gè)想法一定是用array
就輕鬆解決, 但是朋友說(shuō)老師還沒教, 意思就是不要你使用array
解.
我先將i
當(dāng)作row
, j
當(dāng)作column
且都從1
開始, 仔細(xì)觀察, 我把把他分成右上角(j>i
), 對(duì)角線(j==i
), 左下角的部分(j<i
), 因?yàn)橛疑辖鞘?code>遞增, 中間都是1
, 左下角是遞減
, 則可以發(fā)現(xiàn)以下規(guī)律: 一
-
j==i
print1
-
j>i
printj+(i-1)
-
j<i
printj+(n-i+1)
推出來(lái)之後程式就相當(dāng)簡(jiǎn)單了:
for(i = 1 ; i <= n ; i++){
for(j = 1 ; j <= n ; j++){
if(j == i)
printf("1");
else if(j > i)
printf("%d", j-i+1);
else if(j < i)
printf("%d", j+n-i+1);
}
printf("\n");
}