首页 > 解决方案 > 如何使用C语言检查一个数字是否在矩阵中重复?

问题描述

我编写了下面的代码来检查多维数组 a[5][5] 的任何数字是否重复。这是我使用此代码得到的输出。输出。有些数字丢失了,45 重复了 6 次。我的代码有什么问题?

#include <stdio.h>
     int main()
     {
       int a[5][5]={{14,10,87,45,17},{90,46,48,49,41},{42,62,45,36,38},{56,45,53,59,38},{62,64,77,83,90}};
       int i,j,x,y;
     
      for(i=0;i<5;i++){
        for(j=0;j<5;j++){
           for(x=0;x<5;x++){
             for(y=0;y<5;y++){
              if((a[i][j]==a[x][y])&&(i!=x)&&(j!=y)){
                  printf("%d ",a[i][j]);
              }
            }
        }}}
      
     return 0;
     }

标签: c

解决方案


您可以将 x 和 y 分别启动为 i+1 和 j:

#include <stdio.h>
int main()
{
  int a[5][5]={{14,10,87,45,17},{90,46,48,49,41},{42,62,45,36,38},{56,45,53,59,38},{62,64,77,83,90}};
  int i,j,rowsum,columnsum,number,x,y;

  for(i=0;i<5;i++){
    for(j=0;j<5;j++){
      printf("%d  ",a[i][j]);
    }
    printf("\n");
  }

  printf("\n\n");
   for(i=0;i<5;i++){
      for(j=0;j<5;j++){
        for(x=i+1;x<5;x++){
          for(y=j;y<5;y++){
          if(a[i][j]==a[x][y]){
              printf("%d ",a[i][j]);
          }
        }
     }}}

    return 0;
}

注意:这不是优化的方法。


推荐阅读