当前位置:   article > 正文

给定n*n由0和1组成的矩阵,如果矩阵的每一行和每一列的1的数量都是偶数,则认为符合条件。_给定n*n由0和1组成的矩阵,如果矩阵的每一行和每一列的1的数量都是偶数,则认为符合

给定n*n由0和1组成的矩阵,如果矩阵的每一行和每一列的1的数量都是偶数,则认为符合

 

题目分析:输入一个n×n的矩阵,每个元素是0或者1,那么根据题意就有三种情况

        1.每行每列都是正确的

        2.有两行或者两列错误,这种就是改变一个元素也不能正确的

        3.就是只有一行且一列不正确

 
 

  1. //思路:构造数组 遍历数组 根据是否成立构造出行数组和列数组
  2. //遍历行列数组 判断符合什么情况
  3. int main(){
  4. int n;
  5. cin>>n;
  6. int a[110][110];
  7. int i,j;
  8. //输入元素
  9. for(i = 0;i<n;i++){
  10. for(j = 0;j<n;j++){
  11. cin>>a[i][j];
  12. }
  13. }
  14. //遍历
  15. int h[110],l[110],sumh=0,suml=0;
  16. for(i = 0;i<n;i++){
  17. sumh=0,suml=0;
  18. for(j = 0;j<n;j++){
  19. if(a[i][j]==1){
  20. sumh++;
  21. }
  22. if(a[j][i]==1){
  23. suml++;
  24. }
  25. }
  26. //判断该行,列的1的数量
  27. if(sumh%2==0){
  28. h[i] = 1;
  29. }else{
  30. h[i] = 0;
  31. }
  32. if(suml%2==0){
  33. l[i] = 1;
  34. }else{
  35. l[i] = 0;
  36. }
  37. }
  38. sumh=0,suml=0;
  39. int I,J;//记录几行几列
  40. //遍历h,l数组
  41. for(i = 0;i<n;i++){
  42. if(h[i]==0){
  43. sumh++;
  44. I=i+1;
  45. }
  46. if(l[i]==0){
  47. suml++;
  48. J=i+1;
  49. }
  50. }
  51. if(sumh==0&&suml==0){
  52. cout<<"OK";
  53. }else if(sumh==1&&suml==1){
  54. cout<<I<<" "<<J;
  55. }else{
  56. cout<<"Corrupt";
  57. }
  58. return 0;
  59. }

 

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号