c - 如何使用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;
}
解决方案
您可以将 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;
}
注意:这不是优化的方法。
推荐阅读
- java - java中的三位数彩票程序
- arrays - 根据列中的条件(文本)求和和相乘。(谷歌表)
- javascript - webpack:如何在 YAML 文件中注入 JS 块
- c - C,字符串数组不会弃用从字符串常量到 'char*' 的转换
- android - 每次运行后在 Android 内存中创建一个具有不同名称的新文件夹
- python - 从文件中读取行添加附加行
- asp.net - START_PAGE 只制作第一页的标题
- asp.net-mvc - mvc) 我想在我的列表播放器视图中获取播放器列表
- angularjs - $scope.dtInstance.reloadData() 在 $interval 内调用时不是函数
- ios - 在 Swift 的函数参数中强制展开是如何工作的?