c语言数组查重算法
2022-04-29阅读(90)
问:C语言判断数组是否重复,
- 答:chachong(a[6]);//函数调用int
chachong(int
a[]);//函数声明这问题需要楼主了解数组知识a[6]只是一个值;而且是一个未定义的值;因为数组a不存在下标为6的元素;建议改为chachong(a);//函数调用int
chachong(int
*a);//函数声明
问:C语言数组判断是否有重复元素?
- 答:这是方法定义,num是参数,在调用方法的时候会传值的,参数值不是在方法里定义的。
在原文中找到的方法调用
这个方法有4个参数,第一个参数是用于判断的数组,第二个参数是判断哪行的数组不与num数值重复,第三个是判断哪列的数组不与num数值重复,第四个是用于对比重复的数字,这个方法其实就是指定行列的元素是否与指定数字相同,并不是判断数组是否有重复元素,要通过反复的调用此方法才可以实现,如果题主想只判断一个数组是否有重复元素,我可以给出一个方法,只带入判断数组的参数,如下: - 答:num在函数isRowAndColRepeat中是通过参数传入的数据,它的值是调用函数赋给的。
调用函数是
for(i=1; i<10; i++)
//从1~9开始试数 for(i = 1;i < 10;i++) //如果1~9中有合适的数,则该位置的数为该数,并开始遍历下一个位置
if(isRowAndColRepeat(array,row,col,i) && isBlockRepeat(array,row,col,i))
{
array[row][col]=i;
dfs(array,row + (col+1)/9,(col+1)%9); //当每一行的单元格都遍历过,再进入下一行
}
所以这里num的值取自i值。而i值是for循环来决定的
问:C语言中,怎样判断一个数组中是否有重复元素呢?最好用程序实现
- 答:可以先排序再比较,选个快的排序算法
- 答:因为数组中的数据是连续存放的,所以,只要从二维数组的首地址开始查找就可以了。查找方法同一维数组的查找方法,说明如下:
int a[3][4];
int *p=a[0]; //首地址
int i=0;
for( i=0;i<3*4;i++ ) //数据总长度为3*4
{
int t=0;
for( j=i+1;j<3*4;j++ )//数据总长度为3*4
if( *(p+i) == *(p+j) )
cnt++;
if ( cnt > 0 )
{
printf("有重复!");
break;
}
} - 答:二维数组和一维数组同理呀
问:一个C语言算法,关于筛选重复数据
- 答:用两个for
第一个for为历遍数组。
嵌套的另一个for用来判断本数之前是否有与其相同的数。
没有就输出。
有就忽略。
参考这个:
#include
main()
{
int
a[20],i,j,n=0;
for(i=0;i<20;i++)
scanf("%d",&a[i]);
for(i=0;i<20;i++)
{
for(j=0;j
评论
加载更多
问:C语言数组去除重复内容
- 答:用两个游标控制,可以方便的实现,参考代码如下:
#include<stdio.h>
#define SIZE 12
int a[SIZE]={0,0,0,1,2,2,3,4,4,5,5,44};
int main()
{
int i=1,j=0;
while(i<SIZE)
if(a[j]!=a[i]){
++j;
a[j]=a[i];
++i;
} else ++i;
for(i=0;i<=j;++i){
printf("%d",a[i]);
if(i<j)printf(",");
}
return 0;
} - 答:#include<stdio.h>
#define SIZE 12
main() {
int a[SIZE] = { 0,0,0,1,2,2,3,4,4,5,5,44 };
int count = 1;
int i = 0;
for (i = 1; i < SIZE; i++) {
if (a[i] != a[count - 1]) {
a[count++] = a[i];
}
}
if (count > SIZE) count--;
for (i = 0; i < count; i++) {
printf("%d ", a[i]);
}
}