描述 Description 以下的數字倒直角三角形是由二個數確定的:一個數是行數R,1<=R<=39,另一個是種子數S,1<=S<=9。S放在左上角,照著樣例輸出文件的樣子,寫一個程式,根據輸入的二個數列印出相應的數字倒直角三角形。 輸入格式 Input Format 單獨一行,二個用空格隔開的整 ...
描述 Description
以下的數字倒直角三角形是由二個數確定的:一個數是行數R,1<=R<=39,另一個是種子數S,1<=S<=9。S放在左上角,照著樣例輸出文件的樣子,寫一個程式,根據輸入的二個數列印出相應的數字倒直角三角形。
輸入格式 Input Format
單獨一行,二個用空格隔開的整數
輸出格式 Output Format
輸出倒直角數字三角形,輸出時數字與數字之間不留空格字元。
樣例輸入 Sample Input
6 1
樣例輸出 Sample Output
124727
35838
6949
151
62
3
(由於顯示問題三角形應該是右對齊!!!)
時間限制 Time Limitation
1s
來源 Source
usaco 月賽
一道比較剛的二維數組的題,對於剛學數組沒幾天的我看到這道題其實我是拒絕的,剛看完題我心裡就暗想,這TMD是啥,然後再仔細看了看才發現可以換一種思想來寫這道題
那就是將我們一慣把二位數組由行輸出的方式轉化成由列的方式輸出,這樣問題就可以解決了。
貼出代碼:
1 #include <iostream> 2 using namespace std; 3 int s,r,a[50][50]; 4 void init() 5 { 6 cin>>r>>s; 7 for(int i=1;i<=r;i++) 8 for(int j=1;j<=i;j++) 9 { 10 a[i][j]=s; //第一個數 11 if(s<9) //判斷 如果大於9就從1開始 12 s++; 13 else 14 s=1; 15 } 16 } 17 void work() 18 { 19 for(int j=1;j<=r;j++) //控制列 從列輸出 20 { 21 for(int l=2;l<=j;l++)//控制行空格 22 cout<<' '; 23 for(int i=1;i<=r;i++)//控制行 24 { 25 if(a[i][j]!=0) 26 cout<<a[i][j]; 27 } 28 cout<<endl; 29 } 30 31 } 32 int main() 33 { 34 init(); 35 work(); 36 return 0; 37 }