c语言数组查重算法

c语言数组查重算法

问:C语言判断数组是否重复,
  1. 答:chachong(a[6]);//函数调用int
    chachong(int
    a[]);//函数声明这问题需要楼主了解数组知识a[6]只是一个值;而且是一个未定义的值;因为数组a不存在下标为6的元素;建议改为chachong(a);//函数调用int
    chachong(int
    *a);//函数声明
问:C语言数组判断是否有重复元素?
  1. 答:这是方法定义,num是参数,在调用方法的时候会传值的,参数值不是在方法里定义的。
    在原文中找到的方法调用
    这个方法有4个参数,第一个参数是用于判断的数组,第二个参数是判断哪行的数组不与num数值重复,第三个是判断哪列的数组不与num数值重复,第四个是用于对比重复的数字,这个方法其实就是指定行列的元素是否与指定数字相同,并不是判断数组是否有重复元素,要通过反复的调用此方法才可以实现,如果题主想只判断一个数组是否有重复元素,我可以给出一个方法,只带入判断数组的参数,如下:
  2. 答: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语言中,怎样判断一个数组中是否有重复元素呢?最好用程序实现
  1. 答:可以先排序再比较,选个快的排序算法
  2. 答:因为数组中的数据是连续存放的,所以,只要从二维数组的首地址开始查找就可以了。查找方法同一维数组的查找方法,说明如下:
    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;
        }
    }
  3. 答:二维数组和一维数组同理呀
问:一个C语言算法,关于筛选重复数据
  1. 答:用两个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语言数组去除重复内容
  1. 答:用两个游标控制,可以方便的实现,参考代码如下:
    #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;
    }
  2. 答:#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]);
    }
    }
c语言数组查重算法
下载Doc文档

猜你喜欢