布尔矩阵:
#include<stdio.h> int main(){ ?? ?int num, x=0, y=0, flag=1, flag1=1,ret,count=0,count1=0; ?? ?int a[100][100]; ?? ?scanf("%d",&num); ? ?? ?for (int i = 0; i < num; i++) ?? ?{ ?? ??? ?for (int j = 0; j < num; j++) ?? ??? ??? ?scanf("%d",&a[i][j]); ?? ?} ? ?? ?for (int i = 0; i < num; i++) ?? ?{ ?? ??? ?ret = 0; ?? ??? ?for (int j = 0; j < num; j++){ ?? ??? ??? ?if (a[i][j]==1) ?? ??? ??? ?{ ?? ??? ??? ??? ?ret++; ?? ??? ??? ?} ?? ??? ?} ?? ??? ? ?? ??? ?if (ret%2) ?// ?? ??? ?{ ?? ??? ??? ?flag = 0; ?? ??? ??? ?x = i; ?? ??? ??? ?count++; ?? ??? ?} ?? ?} ?? ?for (int j = 0; j < num; j++) ?? ?{ ?? ??? ?ret = 0; ?? ??? ?for (int i = 0; i < num; i++){ ?? ??? ??? ?if (a[i][j]==1) ?? ??? ??? ?{ ?? ??? ??? ??? ?ret++; ?? ??? ??? ?} ?? ??? ?} ?? ??? ? ?? ??? ?if (ret%2){ ? ?? ??? ??? ?flag1 = 0; ?? ??? ??? ?y = j; ?? ??? ??? ?count1++; ?? ??? ?} ?? ??? ? ?? ?} ?? ?if (flag&&flag1) ?? ?{ ?? ??? ?printf("OK"); ?? ?} ?? ?else if (count==1&&count1==1) ?? ?{ ?? ??? ?printf("Change bit(%d,%d)",x,y); ?? ?} ?? ?else{ ?? ??? ?printf("Corrupt"); ?? ?} }
上三角矩阵判断:
#include <stdio.h> #define N 10? int IsUpperTriMatrix(int a[][N], int n) { ?? ?int i,j,c=1; ?? ?for(i=0;i<n;i++) ?? ?{ ?? ??? ?for(j=0;j<n;j++) ?? ??? ?{ ?? ??? ??? ?if(i>j&&i>0) ?? ??? ??? ?{ ?? ??? ??? ??? ?if(a[i][j]!=0){ ?? ??? ??? ??? ??? ?c=0; ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ?} ?? ??? ? ?? ?}return c; ?? ? } int main() { ?? ?int n,i,j,a[N][N]; ?? ?scanf("%d",&n); ?? ?for(i=0;i<n;i++){ ?? ??? ?for(j=0;j<n;j++) ?? ??? ?{ ?? ??? ??? ?scanf("%d",&a[i][j]); ?? ??? ??? ? ?? ??? ?} ?? ?}if(IsUpperTriMatrix(a,n)){ ?? ??? ?printf("YES\n"); ?? ??? ? ?? ?}else? ?? ?printf("NO\n"); ?? ?return 0; ?? ? }
?
|