gpt4 book ai didi

c - 使用C,找到N个数组中唯一的数组

转载 作者:行者123 更新时间:2023-11-30 15:51:50 24 4
gpt4 key购买 nike

要在 N 个数组中找到唯一的数组,假设我有 3 个数组;

    array_1 [ ];
array_2 [ ];
array_3 [ ];

How I approached is;

I will have set a reference array

ref_array[] =[values from 1 to 12]

保证所有数组都具有范围从 1 到 12 的随机元素。

e.g 1;array_1[7,8,9] , 
array_2[1,2,3,4] ,
array_3[ 2,4,10,11]..
during the process of array_1 loop (7,8,9 are marked to zero in reference array)
and in next loop of array_2 (1,2,3,4 are marked to zero in reference array) ,
and in next loop of array_3( 2,4 wont have matching element so store the array num which is three from this example), so array_1 and array_2 are unique among the three arrays

例如 2 详细信息 + 如果 array_1 和 ref_array 之间存在匹配元素,则将相应的 ref_array 元素标记为零。

    e.g array_1 has three elements[ 7,10,9]

*array_1 7 is = ref_array 7 then
mark ref_array[k]=0;
so that there is no 7 in ref_array

*array_1 10 is = ref_array 10 then
mark ref_array[k]=0;
so that there is no 10 in ref_array

*array_1 9 is = ref_array 9
mark ref_array[k]=0;
so that there is no 9 in ref_array

+ now next array comes into the loop
e.g array_2 has two elements[ 10, 1]

*array_2 10is != ref_array [k]

now element 10 is not found in the reference array

then store the value of 'i'
here i is the route num(which is array_num, in this example it is 2)

array_2 2is = ref_array 2
mark ref_array[k]=0;

so that there is no 2 in ref_array.

+ e.g array_3 has three elements[ 2,7,11,10]

*same procedure follows, element 2,7,10 has no matching to reference array.
so the value of i is stored (which is array_num, in this example it is 3)

+ solution:
so the array_1 is unique among the three arrays

需要建议和指导。

我已经尝试过我的代码,但我在解决方案部分遇到了问题

#include <stdio.h> 
struct route{

int route[6][6];
int no_routes_found;
int count_each_route[6];
};

int main() {
struct route *route_ptr, route_store;
route_ptr=&route_store;
int ref_array[13];
int count_ref_array=13;
int i,j,k;
int found_indices[18];
int index_count=0;
int store;

int count=1;
int random;
int flag=0;

// intializing the reference array
for (i = 0; i < 13; i++)
{
ref_array[i]= count++;
printf("\nref_array[%d] = %d", i,ref_array[i]);

}

// initializing the structure
route_ptr->no_routes_found=3;
route_ptr-> count_each_route[0]=3;
route_ptr-> count_each_route[1]=2;
route_ptr-> count_each_route[2]=4;
for (i = 0; i < 6; i++)
{
for (j = 0; j < 6; j++)
{

route_ptr->route[i][j] = rand() % 12 +1;
printf("\nroute[%d][%d] = %d", i,j,route_ptr->route[i][j]);

}
}

//// solution part

for (i = 0; i <(route_ptr->no_routes_found) ; i++)
{
for (j = 0; j < route_ptr-> count_each_route[i]; j++)
{
for(k=0;k<(count_ref_array) ;k++)
{
if (route_ptr->route[i][j]==ref_array[k])
{

printf("\nroute %dis = ref_array %d",route_ptr->route[i][j], ref_array[k]);
// here is where i need the solution
}

}
}
}

}

最佳答案

如何找到与其他数组不同的数组?通过将每个数组与第一个数组进行比较。因为如果前两个不同,您无法分辨哪个是奇数,所以需要特殊情况的代码。

int equal(int*a0, int *a1, size_t array_elems) {
return !memcmp(a0, a1, array_elems * sizeof(int));
}

int unequal_array(int **arrays, int N, size_t array_elems) {
if (!equal(arrays[0], arrays[1], array_elems))
return equal(arrays[0], arrays[2], array_elems) ? 1 : 0;
for (int i = 2; i < N; i++) {
if (!equal(arrays[0], arrays[i], array_elems)) return i;
}
return -1;
}

关于c - 使用C,找到N个数组中唯一的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14799555/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com