close
內容
輸出一螺旋矩陣。
輸入說明
每行有一正整數T,代表有幾組測試資料
接下來有T行, 每行有N、M兩正整數
N為矩陣長寬,就是會有N*N矩陣
M為方向,M=1為順時鐘,M=2為逆時鐘
N範圍為1~100之間
輸出說明
把矩陣輸出,矩陣值之間寬度為5,就是[00000]寬度
C++可用setw(5)或C的%5d輸出
感謝 Sean64 https://zerojudge.tw/ShowThread?postid=12309&reply=0
因為不會 ,所以我理解後,照著他的思路打一次。
請大家一定要先去看他的喔。
C++
#include <iostream> #include <iomanip> using namespace std; int main() { int t,n,m; while(cin>>t) { while(t--) { int r[100][100]; int count=1;//計數器 cin>>n>>m; //j<(n+1)/2 繞一圈就有兩層 所以小於n+1/2 就可以了 for(int j=0;j<(n+1)/2;j++) //繞幾圈 { //j<(n+1)/2 同理 所以n - (j*2) -1; for(int k=0;k<n-j*2-1;k++) //上面 { r[j][k+j]=count++; } for(int k=0;k<n-j*2-1;k++)//右邊 { r[j+k][n-j-1]=count++; } for(int k=0;k<n-j*2-1;k++)//下面 { r[n-j-1][n-j-k-1]=count++; } for(int k=0;k<n-j*2-1;k++)//左邊 { r[n-j-k-1][j]=count++; } } if(n%2)//正中間 { r[n/2][n/2]=count++; } //輸出 for(int j=0;j<n;j++) { for(int k=0;k<n;k++) { if(m==1) { cout<<setw(5)<<r[j][k];//順時針 } else { cout<<setw(5)<<r[k][j];//逆時針 行列互換就好 } } cout<<endl; } cout<<endl; } } return 0; }
全站熱搜
留言列表