以下兩題是朋友的段考題, 朋友來問我我就幫他解了一下.
Problem
假設使用者輸入3
, 電腦會印出:
123
312
231
現在使用者輸入5
, 則電腦會印出這些東西:
12345
51234
45123
34512
23451
然後再推廣到n
Solution
一開始第一個想法一定是用陣列就輕鬆解決, 但是朋友說老師還沒教, 意思就是不要你使用陣列解.
我先將i
當作row
, j
當作column
且都從1
開始, 我把把他分成右上角(j>i
), 對角線(j==i
), 左下角的部分(j<i
), 其實想一想你會發現規律, 假設我已使用者輸入n
, 則我會發現有:
-
j==i
print1
-
j>i
printj+(i-1)
-
j<i
printj+(n-i+1)
推出來之後程式就相當簡單了:
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");
}