1. 題目描述:BC105 矩陣相等判定
牛客網OJ題鏈接
描述:
KiKi得到了兩個n行m列的矩陣,他想知道兩個矩陣是否相等,請你回答他。(當兩個矩陣對應數組元素都相等時兩個矩陣相等)。
示例1
輸入:
2 2
1 2
3 4
1 2
3 4
輸出:Yes
2.思路
用兩個二維數組,把數組先接收進來,然后直接for循環判斷每個值是否相等。我這里設置了一個標志flag = 0;一旦不相等就flag置為1 。最后全部遍歷完之后判斷。
3. 代碼實現
//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");}elseprintf("Yes\n");return 0;
}
4. 代碼實現2
這個加入了goto 語句,因為如果我們已經判斷不相等,就不需要判斷剩余的了
#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");} elseprintf("Yes\n");return 0;
}
5. 代碼實現3
這里我們先獲取了第一個數組內容,又獲取了第二個數組內容,但是其實我們的目的不是為了獲取數組,我們只是為了判斷是否相等。所以在第一個數組獲取到之后,第二個數組獲取的時候就可以直接判斷是否相等。
#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");} elseprintf("Yes\n");return 0;
}
6. 代碼實現4
其實并不需要再創建兩個循環變量,都使用i和j是沒問題的,因為我們會給i,j重新賦值為0
#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");} elseprintf("Yes\n");return 0;
}