1. 题目描述:BC105 矩阵相等判定
描述:
KiKi得到了两个n行m列的矩阵,他想知道两个矩阵是否相等,请你回答他。(当两个矩阵对应数组元素都相等时两个矩阵相等)。
示例1
输入:
2 2
1 2
3 4
1 2
3 4
输出:Yes
2.思路
用两个二维数组,把数组先接收进来,然后直接for循环判断每个值是否相等。我这里设置了一个标志flag = 0;一旦不相等就flag置为1 。最后全部遍历完之后判断。
3. 代码实现
c
//KiKi得到了两个n行m列的矩阵,他想知道两个矩阵是否相等,请你回答他。(当两个矩阵对应数组元素都相等时两个矩阵相等)
#include<stdio.h>
int main()
{
int m = 0;
int n = 0;
scanf("%d %d", &m, &n);
int i = 0;
int j = 0;
int arr1[10][10] = {0};
int arr2[10][10] = {0};
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
scanf("%d", &arr1[i][j]);
}
}
int k = 0;
int o = 0;
for (k = 0; k < m; k++)
{
for (o = 0; o < n; o++)
{
scanf("%d", &arr2[k][o]);
}
}
int flag = 0;
int x = 0;
int y = 0;
for (x = 0; x < m; x++)
{
for (y = 0; y < n; y++)
{
if(arr1[x][y] != arr2[x][y])
{
flag = 1;
}
}
}
if (flag)
{
printf("No\n");
}
else
printf("Yes\n");
return 0;
}
4. 代码实现2
这个加入了goto 语句,因为如果我们已经判断不相等,就不需要判断剩余的了
c
#include<stdio.h>
int main() {
int m = 0;
int n = 0;
scanf("%d %d", &m, &n);
int i = 0;
int j = 0;
int arr1[10][10] = {0};
int arr2[10][10] = {0};
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
scanf("%d", &arr1[i][j]);
}
}
int k = 0;
int o = 0;
for (k = 0; k < m; k++) {
for (o = 0; o < n; o++) {
scanf("%d", &arr2[k][o]);
}
}
int flag = 0;
int x = 0;
int y = 0;
for (x = 0; x < m; x++) {
for (y = 0; y < n; y++) {
if (arr1[x][y] != arr2[x][y]) {
flag = 1;
goto end;
}
}
}
end:
if (flag) {
printf("No\n");
} else
printf("Yes\n");
return 0;
}
5. 代码实现3
这里我们先获取了第一个数组内容,又获取了第二个数组内容,但是其实我们的目的不是为了获取数组,我们只是为了判断是否相等。所以在第一个数组获取到之后,第二个数组获取的时候就可以直接判断是否相等。
c
#include<stdio.h>
int main() {
int m = 0;
int n = 0;
scanf("%d %d", &m, &n);
int i = 0;
int j = 0;
int arr1[10][10] = {0};
int arr2[10][10] = {0};
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
scanf("%d", &arr1[i][j]);
}
}
int k = 0;
int o = 0;
int flag = 0;
for (k = 0; k < m; k++) {
for (o = 0; o < n; o++) {
scanf("%d", &arr2[k][o]);
if (arr1[k][o] != arr2[k][o])
{
flag = 1;
goto end;
}
}
}
end:
if (flag) {
printf("No\n");
} else
printf("Yes\n");
return 0;
}
6. 代码实现4
其实并不需要再创建两个循环变量,都使用i和j是没问题的,因为我们会给i,j重新赋值为0
c
#include<stdio.h>
int main() {
int m = 0;
int n = 0;
scanf("%d %d", &m, &n);
int i = 0;
int j = 0;
int arr1[10][10] = {0};
int arr2[10][10] = {0};
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
scanf("%d", &arr1[i][j]);
}
}
int flag = 0;
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
scanf("%d", &arr2[i][j]);
if (arr1[i][j] != arr2[i][j])
{
flag = 1;
goto end;
}
}
}
end:
if (flag) {
printf("No\n");
} else
printf("Yes\n");
return 0;
}