请教两个数组比较的问题
比如a[]={1,2,3},b[]={3,2,1}哪么就认为他俩是相等的而如过a[]={1,2,3},b[]={1,2,1}则不是。。。。
希望有代码
谢谢
补充一点:我的意思不是数组长度,而是元素的比较。即两个数组如果元素相同即说明相等(但不能重复)。
[[it] 本帖最后由 bleach100 于 2008-3-29 22:07 编辑 [/it]]
/* Name: Copyright: Author: suixin Date: 30-03-08 08:29 Description: */ #include <stdio.h> #include <stdlib.h> // 去除重复 int DelDup(int a[], int iSize) { int iDelCount = 0; for (int ps=0; ps<iSize; ps++) { if (a[ps] != a[ps+1]) { a[ps-iDelCount] = a[ps]; } else { iDelCount++; } } return iDelCount; } // 在一个数组中是否有目标元素 int FindElem(int iSource[], int iSourceCount, int iAim) { for (int ps=0; ps<iSourceCount; ps++) { if (iSource[ps] == iAim) // 是要找的数 { return 1; } } return 0; } // 检测两个数组是否"相同" int CheckSame(int a[], int b[], int iaSize, int ibSize) { int iaCount = 0, ibCount = 0; for (int ps=0; ps<iaSize; ps++) { if (FindElem(b, ibSize, a[ps])) // 在b里面找a的元素 { iaCount++; // a里面的元素 b里面都有 } } for (int pos=0; pos<ibSize; pos++) { if (FindElem(a, iaSize, b[pos])) { ibCount++; } } if ((iaCount==iaSize) && (ibCount==ibSize)) { return 1; } return 0; } int main(void) { int a[]={1,2,3,3,1}, b[]={3,2,1,2,1,3,2,}; int iaSize = sizeof(a)/sizeof(int); // C++里,这里应该加上const int ibSize = sizeof(b)/sizeof(int); if (DelDup(a,iaSize) > iaSize) { return -1; } if (DelDup(b,ibSize) > ibSize) { return -1; } if (CheckSame(a,b,iaSize,ibSize)) { puts("相同"); } else { puts("不相同"); } system("pause"); return 0; }
/* Name: Copyright: Author: suixin Date: 30-03-08 08:29 Description: */ #include <stdio.h> #include <stdlib.h> // 去除重复 int DelDup(int a[], int iSize) { int iDelCount = 0; for (int ps=0; ps<iSize; ps++) if (a[ps] != a[ps+1]) a[ps-iDelCount] = a[ps]; else iDelCount++; return iDelCount; } // 在一个数组中是否有目标元素 int FindElem(int iSource[], int iSourceCount, int iAim) { for (int ps=0; ps<iSourceCount; ps++) if (iSource[ps] == iAim) // 是要找的数 return 1; return 0; } // 检测两个数组是否"相同" int CheckSame(int a[], int b[], int iaSize, int ibSize) { int iaCount = 0, ibCount = 0; for (int ps=0; ps<iaSize; ps++) if (FindElem(b, ibSize, a[ps])) // 在b里面找a的元素 iaCount++; // a里面的元素 b里面都有 for (int pos=0; pos<ibSize; pos++) if (FindElem(a, iaSize, b[pos])) ibCount++; if ((iaCount==iaSize) && (ibCount==ibSize)) return 1; return 0; } int main(void) { int a[]={1,2,3,3,1}, b[]={3,2,1,2,1,3,2,}; int iaSize = sizeof(a)/sizeof(int); int ibSize = sizeof(b)/sizeof(int); if (DelDup(a,iaSize) > iaSize) return -1; if (DelDup(b,ibSize) > ibSize) return -1; if (CheckSame(a,b,iaSize,ibSize)) puts("相同"); else puts("不相同"); system("pause"); return 0; }