ACM_蛇形矩陣
阿新 • • 發佈:2018-05-12
tput 發現 -s cin AC 找規律 problem cout 一個空格
蛇行矩陣
Time Limit: 4000/2000ms (Java/Others)
Problem Description:
蛇形矩陣是由1開始的自然數依次排列成的一個矩陣上三角形。
Input:
本題有多組數據,每組數據由一個正整數N組成。(N不大於100)
Output:
對於每一組數據,輸出一個N行的蛇形矩陣。兩組輸出之間不要額外的空行。矩陣三角中同一行的數字用一個空格分開。行尾不要多余的空格。
Sample Input:
5
Sample Output:
1 3 6 10 15 2 5 9 14 4 8 13 7 12 11
解題思路:找規律題,先打表,再直接輸出。
舉個栗子:當n=3時,矩陣坐標如下:
(0,0),(0,1),(0,2)
(1,0),(1,1)
(2,0)
通過上面的舉例,我們可以發現,同一顏色從左往右看,橫坐標是降序,縱坐標是升序,結合樣例可知,給其一個計數器,從行開始,依次遍歷,公式為snake[i-j][j]=num++,水過。
AC代碼:
1 #include<bits/stdc++.h> 2 using namespace std; 3 int main() 4 { 5 int n,num=1,snake[101][101]; 6 memset(snake,0,sizeof(snake)); 7 for(int i=0;i<101;++i) 8for(int j=0;j<=i;++j) 9 snake[i-j][j]=num++; 10 while(cin>>n){ 11 for(int i=0;i<n;++i){ 12 for(int j=0;j<n-i;++j){ 13 cout<<snake[i][j]; 14 if(j!=n-i-1)cout<<‘ ‘; 15 else cout<<endl;16 } 17 } 18 } 19 return 0; 20 }
ACM_蛇形矩陣