for(i=0;i<5;i+) { for0=0;j<5;j++) { cin>>afi]j]; } } cin>>n>>m; fori=0;i<5,i++) int t; t=an-l][]; an-1][i=am-l][: a[m-1][i]=t; } fori=0:i<5:i++) for(j=0;j<5;j++) cout<<a[i][j]<<""; } cout <<endl: } } 51.8-06求两个矩阵的相似度 描述 给出两幅相同大小的黑白图像(用0-1矩阵)表示,求它们的相似度。 说明:若两幅图像在相同位置上的像素点颜色相同,则称它们在该位置具有相同的像素点。 两幅图像的相似度定义为相同像素点数占总像素点数的百分比。 输入 第一行包含两个整数m和n,表示图像的行数和列数,中间用单个空格隔开。1<=m<=100, 1<=n<=100。 之后m行,每行n个整数0或1,表示第一幅黑白图像上各像素点的颜色。相邻两个数之间 用单个空格隔开。 之后m行,每行n个整数0或1,表示第二幅黑白图像上各像素点的颜色。相邻两个数之间 用单个空格隔开
for(i = 0 ; i < 5 ; i ++) { for(j = 0 ; j < 5 ; j ++) { cin >> a[i][j]; } } cin >> n >> m; for(i = 0 ; i < 5; i ++) { int t; t = a[n-1][i]; a[n-1][i] = a[m-1][i]; a[m-1][i] = t; } for(i = 0 ; i < 5 ; i ++) { for(j = 0 ; j < 5 ; j ++) { cout << a[i][j] << " "; } cout <<endl; } } 5 1.8--06 求两个矩阵的相似度 描述 给出两幅相同大小的黑白图像(用 0-1 矩阵)表示,求它们的相似度。 说明:若两幅图像在相同位置上的像素点颜色相同,则称它们在该位置具有相同的像素点。 两幅图像的相似度定义为相同像素点数占总像素点数的百分比。 输入 第一行包含两个整数 m 和 n,表示图像的行数和列数,中间用单个空格隔开。1 <= m <= 100, 1 <= n <= 100。 之后 m 行,每行 n 个整数 0 或 1,表示第一幅黑白图像上各像素点的颜色。相邻两个数之间 用单个空格隔开。 之后 m 行,每行 n 个整数 0 或 1,表示第二幅黑白图像上各像素点的颜色。相邻两个数之间 用单个空格隔开
输出 一个实数,表示相似度(以百分比的形式给出),精确到小数点后两位。 样例输入 33 101 001 110 110 001 001 样例输出 44.44 #include <bits/stdc++.h> using namespace std; int main() { inta1011011,b101l[101 intij; int m,n; int count =0: cin>>m>>n; for(i=0;i<m ;i++) { for(j=0;j<n;j++) { cin>>a[i]j]; } for(i=0;i<m ;i++) { for(j=0;j<n;j++) cin >b[i]] } } for(i=0;i<m ;i++) { for(j=0;j<n;j++)
输出 一个实数,表示相似度(以百分比的形式给出),精确到小数点后两位。 样例输入 3 3 1 0 1 0 0 1 1 1 0 1 1 0 0 0 1 0 0 1 样例输出 44.44 #include <bits/stdc++.h> using namespace std; int main() { int a[101][101],b[101][101]; int i,j; int m,n; int count = 0; cin >> m >> n; for(i = 0 ; i < m ; i ++) { for(j = 0 ; j < n ; j ++) { cin >> a[i][j]; } } for(i = 0 ; i < m ; i ++) { for(j = 0 ; j < n ; j ++) { cin >> b[i][j]; } } for(i = 0 ; i < m ; i ++) { for(j = 0 ; j < n ; j ++)
if(afi]]==b(i]j]) count++; } cout <<fixed <<setprecision(2)<<(double)count/(m*n)*100 <<endl: 61.8-11将一个矩阵顺时针旋转90度 描述 输入一个n行m列的黑白图像,将它顺时针旋转90度后输出。 输入 第一行包含两个整数n和m,表示图像包含像素点的行数和列数。1<=n<=100,1<=m<= 100。 接下来行,每行m个整数,表示图像的每个像素点灰度。相邻两个整数之间用单个空格 隔开,每个元素均在0-255之间。 输出 m行,每行n个整数,为顺时针旋转90度后的图像。相邻两个整数之间用单个空格隔开。 样例输入 33 123 456 789 样例输出 741 852 963 分析: 1用二维数组来存储数据 2设数组有m行n列,则根据旋转后的数据分析获得:输出时是n行m列,所以输出时, 外循环为n行,内循环为m列,而且列的循环变量是从大到小变化的(例如:输出的第1 行数据是741,正好在原来的数组中,是行从大到小变化的) #include<iostream>
{ if(a[i][j] == b[i][j]) { count ++ ; } } } cout <<fixed <<setprecision(2) << (double)count/(m*n) *100 <<endl; } 6 1.8---11 将一个矩阵顺时针旋转 90 度 描述 输入一个 n 行 m 列的黑白图像,将它顺时针旋转 90 度后输出。 输入 第一行包含两个整数 n 和 m,表示图像包含像素点的行数和列数。1 <= n <= 100,1 <= m <= 100。 接下来 n 行,每行 m 个整数,表示图像的每个像素点灰度。相邻两个整数之间用单个空格 隔开,每个元素均在 0~255 之间。 输出 m 行,每行 n 个整数,为顺时针旋转 90 度后的图像。相邻两个整数之间用单个空格隔开。 样例输入 3 3 1 2 3 4 5 6 7 8 9 样例输出 7 4 1 8 5 2 9 6 3 分析: 1 用二维数组来存储数据 2 设数组有 m 行 n 列,则根据旋转后的数据分析获得: 输出时是 n 行 m 列,所以输出时, 外循环为 n 行,内循环为 m 列,而且列的循环变量是从大到小变化的(例如:输出的第 1 行数据是 7 4 1 ,正好在原来的数组中,是行从大到小变化的) #include<iostream>
using namespace std; inta[101][101; int main(){ int m,n; cin>>m>>n; for(int i=1;i<=m;i++){ for(intj=1;j<=n;j++){ cin>>ali][j]; } } for(intj=1;j<=n;j++){ for(int i=m;i>=1;i-) cout长<al]0]<""; cout<<endl; } } 71.8--05求矩阵的鞍点 描述 给定一个5*5的矩阵,每行只有一个最大值,每列只有一个最小值,寻找这个矩阵的鞍点。 鞍点指的是矩阵中的一个元素,它是所在行的最大值,并且是所在列的最小值。 例如:在下面的例子中(第4行第1列的元素就是鞍点,值为8)。 113569 1247810 1056911 86472 1510112025 输入 输入包含一个5行5列的矩阵 输出 如果存在鞍点,输出鞍点所在的行、列及其值,如果不存在,输出"not found" 样例输入 113569 1247810 1056911 86472 1510112025 样例输出
using namespace std; int a[101][101]; int main(){ int m,n; cin >> m >> n; for(int i=1;i<=m;i++){ for(int j=1;j<=n;j++){ cin>>a[i][j]; } } for(int j=1;j<=n;j++){ for(int i=m;i>=1;i--){ cout<<a[i][j]<<" "; } cout<<endl; } } 7 1.8---05 求矩阵的鞍点 描述 给定一个 5*5 的矩阵,每行只有一个最大值,每列只有一个最小值,寻找这个矩阵的鞍点。 鞍点指的是矩阵中的一个元素,它是所在行的最大值,并且是所在列的最小值。 例如:在下面的例子中(第 4 行第 1 列的元素就是鞍点,值为 8 )。 11 3 5 6 9 12 4 7 8 10 10 5 6 9 11 8 6 4 7 2 15 10 11 20 25 输入 输入包含一个 5 行 5 列的矩阵 输出 如果存在鞍点,输出鞍点所在的行、列及其值,如果不存在,输出"not found" 样例输入 11 3 5 6 9 12 4 7 8 10 10 5 6 9 11 8 6 4 7 2 15 10 11 20 25 样例输出
418 #include <iostream> using namespace std; int main() { intA[5][5],n=5,i,j int flag; for(i=0:i<5:i++) for(j=0;j<5;j++) cin>>Afi][]; } int row,col: for(row=0;row<n;row++) col =0; forG=l;j<n,j++){I∥查找第row行最大值的列号 if(A[row][j]>A[row][col]) col=;/∥记录下来 } flag=1; for(i=0,i<n,i+){/查找第col列最小值的行号,确定A[row[col是否为鞍点 if (A[i][col]<A[row][col]) {IIA[row][col不是鞍点 flag =0; break; } } if(lag)∥A[row][col是鞍点 { break: } if (flag==1) cout<<row+1<<""<<col+1<<""<<A[row][col]<endl;
4 1 8 #include <iostream> using namespace std; int main() { int A[5][5], n=5, i, j; int flag; for (i=0; i<5; i++) { for (j=0; j<5; j++) { cin >> A[i][j]; } } int row, col; for (row=0; row<n; row++) { col = 0; for (j=1; j<n; j++){//查找第 row 行最大值的列号 if (A[row][j] > A[row][col]) col = j; //记录下来 } flag = 1; for (i=0; i<n; i++){//查找第 col 列最小值的行号,确定 A[row][col]是否为鞍点 if (A[i][col] < A[row][col]) {//A[row][col]不是鞍点 flag = 0; break; } } if (flag) //A[row][col]是鞍点 { break; } } if (flag == 1) cout << row+1 << " " << col+1 << " " << A[row][col] << endl;