要在N個陣列中查找唯一陣列,請考慮我有3個陣列;使用C,在N個陣列中查找唯一陣列
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
}
}
}
}
}
什麼是真正的問題,或者,你能提供一些信息,說明什麼在代碼中不起作用? – 2013-02-10 15:58:40
從我的解決方案部分,我只能弄清楚數組有匹配元素與參考數組,我不能繼續,如果有匹配的元素,標記'0'到相應的參考數組,如果下一個元素沒有匹配元素到引用數組然後存儲數組的數值。 – 2013-02-10 16:02:08
if,array_1 = [7,10,9]; array_2 = [10,1]; array_3 = [2,7,11,10]。結果應該只提供array_1是唯一的 – 2013-02-10 16:09:33