杨辉三角形2
输入n值,求杨辉三角形中各个位置上的值。
输入描述
一个大于等于2的整型数n
输出描述
题目可能有多组不同的测试数据,对于每组输入数据, 按题目的要求输出相应输入n的杨辉三角形。
示例
输入
6
输出
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
思路
-
先定义一个二维数组,然后定义前两个值:a[1][1]和a[1][2]均为1。
-
循环遍历数组,核心语句是a[i][j]=a[i-1][j]+a[i-1][j-1]。
-
最后输出数组即可。
具体实现
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
int a[50][50];
cin>>n;
a[1][1]=1,a[1][2]=1;
for(int i=2; i<n; i++){
for(int j=1; j<=i+1; j++){
a[i][j]=a[i-1][j]+a[i-1][j-1];
}
}
for(int i=1; i<n; i++){
for(int j=1; j<=i+1; j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
return 0;
}
旋转矩阵
任意输入两个9阶以下矩阵,要求判断第二个是否是第一个的旋转矩阵,如果是,输出旋转角度(0、90、180、270),如果不是,输出-1。
要求先输入矩阵阶数,然后输入两个矩阵,每行两个数之间可以用任意个空格分隔。行之间用回车分隔,两个矩阵间用任意的回车分隔。
输入描述
输入有多组数据。 每组数据第一行输入n(1<=n<=9),从第二行开始输入两个n阶矩阵。
输出描述
判断第二个是否是第一个的旋转矩阵,如果是,输出旋转角度(0、90、180、270),如果不是,输出-1。 如果旋转角度的结果有多个,则输出最小的那个。
示例
输入
3
1 2 3
4 5 6
7 8 9
7 4 1
8 5 2
9 6 3
输出
90
思路
矩阵的计算主要考虑下标的变化,在纸上写出来数组的变化,找下标规律,即可。
具体实现
#include<bits/stdc++.h>
using namespace std;
//计算角度的函数
int SwitchAngle(int a[50][50] , int b[50][50] , int n){ //二维数组传参方式
int angle,i,j;
for(angle=0,i=0; i<n; i++){
for(j=0; j<n; j++){
if(angle==0){
if(a[i][j]==b[i][j]) continue;
else angle=90;
}
if(angle==90){ //90°的下标变化
if(a[i][j]==b[j][n-i-1]) continue;
else angle=180;
}
if(angle==180){ //180°的下标变化
if(a[i][j]==b[n-i-1][n-j-1]) continue;
else angle=270;
}
if(angle==270){ //270°的下标变化
if(a[i][j]==b[n-j-1][i]) continue;
else angle=-1;
}
if(angle==-1){
break; //终止循环
}
}
if(angle==-1) break;
}
return angle;
}
int main(){
int n;
int angle=0;
cin>>n;
int a[50][50],b[50][50];
for(int i=0; i<n; i++) //输入数组1
for(int j=0; j<n; j++)
cin>>a[i][j];
for(int i=0; i<n; i++) //输入数组2
for(int j=0; j<n; j++)
cin>>b[i][j];
angle = SwitchAngle(a,b,n); //调用函数
cout<<angle;
return 0;
}
小结
continue:跳出本次循环,进行下次循环;break:结束循环。