這個問題困擾了很久 有時候一根筋就是轉不過來 還是請各路高手協助一下 非常感謝
因為實際使用的碼比較亂 放出來不好看 所以用簡單的方式比喻 請高手們諒解
如果你要求的是,“找出A组与B组首个差异值的位置“,那么
- 如果两组数组的长度一样,则
int x = -1; // 初始化为-1,表示没有找到目标。 int S = ArraySize(a); for( int i=0; i<S && x<0; ++i ) if ( a[i] != b[i] ) x=i; MessageBox( x ); // 显示结果
- 如果两数组长度不一,且已知a数组长度大于b数组,则
int LA = ArraySize(a); int LB = ArraySize(b); int x = -1; for (int i=0; i<LA && x<0; ++i ) if ( i == LB ) x=i; else if ( a[i] != b[i] ) x=i; MessageBox( x );
“ 有兩組數據 需要篩選出不一樣的部分並找出數組的位置 ”
你这表述就令人费解,难怪你困扰很久。
建议你逆向思维,先求同,找出数组A与B的交集C,再用A与C比较,B与C比较。
如果你要求的是,“找出A组与B组首个差异值的位置“,那么
- 如果两组数组的长度一样,则
- 如果两数组长度不一,且已知a数组长度大于b数组,则
謝謝指導 仔細一看 兩種方式應該都行的通
整理一下套進去試看看
“ 有兩組數據 需要篩選出不一樣的部分並找出數組的位置 ”
你这表述就令人费解,难怪你困扰很久。
建议你逆向思维,先求同,找出数组A与B的交集C,再用A与C比较,B与C比较。
我使用的求同的方式
for(int i=0;i<=10;i++) for(int j=0;j<=10;j++) if(a[i]==b[j]) break; //如果只跳出j循環 那結果應該就對了 但是break是跳出到i的循環 所以結果是錯的 else x=i;
求異的方式肯定也是錯的 因為用了雙循環
無論如何 謝過高手的指導
是不是这样的:A中的每个元素,如果B中没有,那就记录该元素在A中的索引?
//A中的每个元素,如果B中没有,那就记录该元素在A中的索引,保存索引到数组res中 int CreateResSet(const double &a[],const double &b[],int &res[]) { int len1 = ArraySize(a); int len2 = ArraySize(b); int cnt=0; bool found = false; for(int i=0; i<len1; i++) { found = false; for(int j=0; j<len2; j++) { if(a[i]==b[j]) { found = true; break; } } if(!found) { cnt++; ArrayResize(res,cnt); res[cnt-1]=i; } } return(cnt); }
是不是这样的:A中的每个元素,如果B中没有,那就记录该元素在A中的索引?
謝謝高手提供珍貴的代碼
我嘗試帶進去 看看結果會不會是我要的 再次感謝
刚才再看了一次楼主的问题,以及跟帖,似乎楼主要解决的是“找出A组中其值不在B组的元素的下标”,那么6#的代码就符合楼主要求了,代码清晰,有条理,应该可用的了。
我贴的那份代码是用来找首个差异值的位置(按下标次序来算),不是按元素的值来找出全体差异值的位置,与楼主要求不一致,是我的理解与楼主需求有偏差,呵呵,请楼主自行理解和采用。
刚才再看了一次楼主的问题,以及跟帖,似乎楼主要解决的是“找出A组中其值不在B组的元素的下标”,那么6#的代码就符合楼主要求了,代码清晰,有条理,应该可用的了。
我贴的那份代码是用来找首个差异值的位置(按下标次序来算),不是按元素的值来找出全体差异值的位置,与楼主要求不一致,是我的理解与楼主需求有偏差,呵呵,请楼主自行理解和采用。
“找出A组中其值不在B组的元素的下标” 這是我實際的需求沒錯 我在文字敘述上不夠清晰 真不好意思
因為我自身的代碼比較混亂 只提出部分片段 比較方便描述問題
各位提供的解決方案 我還需要一些時間將代碼加進去
無論如何 感謝各位鼎力的協助
目前自己找到的方法是
a[0]=2; a[1]=4; a[2]=6; a[3]=8; a[4]=10; b[0]=2; b[1]=4; b[2]=10; b[3]=6; // for(int i=0;i<=10;i++) for(int j=0;j<=10;j++) if(a[i]==b[j]) //一旦a數組符合b數組其中一個時 進行下一個搜尋 i=i+1 ; else x=j;
按理講 我要找的位置 x 應該要從 i 裡面去選擇
再從a[i]找除對應的數據 而不是從 j 裡面去找出 x
但是反覆測試後 竟然從 j 去對應成 i 時可以找到正確答案
我猜 else後面的 j 應該也是等於 i 吧
不明就理的 就找到了可能是錯誤的答案
目前反覆測試了功能 確實是我想要的結果
請教各路高手
有兩組數據 需要篩選出不一樣的部分並找出數組的位置
編碼應該如何處理比較好