【AC】魔法陣
【題目描述】 昔有人,名斯凱利恩夫·盧克。其英文名乃SkyLYnf·Luke。汝知之何名?曰實,吾亦不知。其有別號曰ylm。何?吾亦不知。汝宜喻之。其乃吾。 他有一個Servant,叫做阿爾託莉雅·潘德拉貢,英文名是Arturia Pendragon,別名是Saber。她的 誓約勝利之劍(Excalibur)比紅A的無限劍制厲害多了!(上一題的紅A沒有Saber厲害)【題目描述·真】 有一天,skylynf正在畫召喚陣。這時候saber走到了召喚陣中間,告訴skylynf說:“你個菜鳥master,連召喚陣都畫錯了,趕快重畫!” 於是saber拿出了一張寫滿了召喚陣畫法的紙。 請你寫一個程式來幫skylynf修改魔法陣,以防他被saber拿劍砍死。 魔法陣是一個n行n列的數列陣。每一個數都小於2147483647。 魔法陣被粗心的skylynf給畫歪了,現在saber要讓他把整個魔法陣移一下位。 saber給了一個例子:
輸入
第一行一個數n(n小於100) 接下來n行,每行n個數。表示skylynf魔法陣。
輸出
N行,每行n個數,表示正確的魔法陣。
輸入樣例
4 13 11 33 31 44 4 5 16 40 15 26 29 21 43 13 13
輸出樣例
21 15 5 31 13 43 26 16 44 11 13 29 40 4 33 13
說明
N<=100
解題思路:
就是第一行的數往下移1位,就是第二行的數往下移2位,就是第三行的數往下移3位以此類推。
再用個數組裝答案就好啦!
程式碼:
#include<cstdio> int n,a[101][101],b[101][101]; int main() { scanf("%d",&n); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) scanf("%d",&a[i][j]),b[i][j]=a[i][j];//讀數,賦初值。 for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if(i+j>n) a[i+j-n][j]=b[i][j]; else //實現交換。 a[i+j][j]=b[i][j]; } } for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { printf("%d ",a[i][j]);//輸出答案。 } printf("\n");//換行。 } return 0; }