abstract:描述 Description以下的数字倒直角三角形是由二个数确定的:一个数是行数R,1<=R<=39,另一个是种子数S,1<=S<=9。S放在左上角,照着样例输出文件的样子,写一个程序,根据输入的二个数打印出相应的数字倒直角三角形。 输入格式 Input Format单独一行,二个用空格隔开的整数 输出格式 Output 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是啥,然后再仔细看了看才发现可以换一种思想来写这道题
那就是将我们一惯把二位数组由行输出的方式转化成由列的方式输出,这样问题就可以解决了。
贴出代码:
#include <iostream> using namespace std; int s,r,a[50][50]; void init() { cin>>r>>s; for(int i=1;i<=r;i++) for(int j=1;j<=i;j++) { a[i][j]=s; //第一个数 if(s<9) //判断 如果大于9就从1开始 s++; else s=1; } } void work() { for(int j=1;j<=r;j++) //控制列 从列输出 { for(int l=2;l<=j;l++)//控制行空格 cout<<' '; for(int i=1;i<=r;i++)//控制行 { if(a[i][j]!=0) cout<<a[i][j]; } cout<<endl; } } int main() { init(); work(); return 0; }