题目描述
贝茜教奶牛们建造一种数字三角形。它从两个数中构造: 大小和种子。 大小 N (1 <= N <= 20) 决定这个三角形有多少行,种子 S (1 <= S <= 9) 决定三角形的第一个数字。这儿有两个示例:
复制N=5, S=3 N=6, S=1
3 4 6 9 4 1 2 4 7 2 7
5 7 1 5 3 5 8 3 8
8 2 6 6 9 4 9
3 7 1 5 1
8 6 2
3
数字三角形的第一行前面没有空格。 分析上面的例子,找寻其中的规律, 然后写一个程序,根据输入的大小 N (1 <= N <= 20) 和种子 S (1 <= S <= 9) ,输出相应的数字三角形。
输入格式
一行: 两个空格隔开的整数 N 和 S
输出格式
N 行:如上所示的数字三角形,要注意每一行的末尾不能有空格
样例
样例输入
复制5 3
样例输出
复制3 4 6 9 4
5 7 1 5
8 2 6
3 7
8
这道题其实只要掌握好2维数组的用法就可以了,要注意每一行的末尾不能有空格,不然交上去会错,本人亲身经历
有题目可知要定义几个变量
int a[1001][1001],n,s;
(注意:建议不要用long long定义,有些oj会超时,虽然我也不知道为什么)
输入可用
cin<<n<<s;
/
printf("%d %d",&n,&s);
注:cin如果超时了就用printf
输入数组时是2维数组所以要用双重循环,同时还要把大于9的s归为1
for(int i=1;i<=n;i++)
{
for(int j=1;j<=i;j++)
{
a[j][i]=s;
s++;
if(s>9)
{
s=1;
}
}
}
根据输出样例每一行都要输出空格,按照规律:
for(int i=1;i<=n;i++)
{
for(int j=1;j<=2*(i-1);j++)
{
cout<<' ';
}
}
这样前面的空格就完成了,然后就是根据题意写最核心的计算了
for(int i=1;i<=n;i++)
{
cout<<a[i][i];
for(int j=i+1;j<=n;j++)
{
cout<<' '<<a[i][j];
}
cout<<endl;
}
这样就解决了一道题