和/或使用不满足循环条件的其余元素创建一个新数组
所以我有两个数组,我将每个元素相互比较,并使用相应的下标,以便检查是否相等。
for ( i = 0; i < n; i++) {
if ( arrayOne[i] == arrayTwo[i] ) {
arrayOne[i] = -1 /UPDATE#1 I assinged the values to -1 since I really don't care what happens tp the "taken" ones, what I want is the statistics of how many became a couple, thus the couple++ counter
couple++; //frequency of same value for each respective subscript
}
}
我将为剩余的元素做其他事情(变量名将是 int single [] )
如果它与我刚删除的元素相同,我会删除(想想这个,因为另一方运气不足以与arrayTwo中相同值的确切位置相匹配)
< / LI>我还会删除重复的剩余元素
我将检查arrayOne中的其余元素是否存在于arrayTwo中,而不考虑相应的下标
示例:
arrayTwo[] = {5,6,7,8};
arrayOne[] = {5,5,8,5,4,4,4}; //comparing arrayOne to arrayTwo
输出:
couple = 1; //(since only element[0] of the two arrays are the same --> 5 == 5
atlast = 1; //no regards to position or subscript as long as present in arrayTwo
,然后
我应该删除arrayOne[0]
,即5,所以我的arrayOne
(或者我将创建新数组)。
剩余的元素是5,8,5,4,4,4。
然后嘿,5已被删除(拍摄),所以我不再需要5s了。所以剩下的元素是8,4,4,4
到现在为止,我只有8,4,4,4。但是4个是重复的,我只需要一个4.所以我删除了duplicationg 4s。
最后,删除拍摄后的arrayOne
中只有8个和4个元素。我会在arrayTwo
检查他们的合作伙伴。 (相同的价值,不考虑下标或位置)的含义,我不再关心这个位置了,只要我在arrayTwo
中有相同的值,那就更重要了)
只有8人在arrayTwo
有合作伙伴。我将其设为atlast++
,因此atlast = 1
。
我不知道该怎么做:
问题解决了。
对于atlast计数器我从所采用的数字中减去它。 (我做了绝对值) //意外的解决方案,比你们给我的见解更多:)
洞察
我唯一需要的输出是couple和atlast的频率。我被我必须做的事情和实现的许多规则所震撼。但坚持不懈真的是值得的。呼。
最后一次运行样本
arrayTwo = {5,6,7,8,9} //唯一的随机数,非重复 arrayOne = {
答案 0 :(得分:1)
要从数组中删除元素,必须将索引之后的所有元素都删除一个,然后减少数组的长度。
替代方案包括:
答案 1 :(得分:1)
另一种解决方法是创建“arrayOneBis”并从“arrayOne”中复制值,跳过要删除的元素?
答案 2 :(得分:0)
#include <stdio.h>
int main(){
int arrayTwo[] = {5,6,7,8};
int arrayOne[] = {5,5,8,5,4,4,4};
int size1 = 7, size2 = 4;
//i will initialize them randomly, 0 - 9 only
int counting[10] = {0};
int i;
for(i=0;i<size1;++i)
++counting[arrayOne[i]];//counting
for(i=0;i<size2;++i)
counting[arrayTwo[i]]=0;//delete
size1 = 0;
for(i=0;i<10;++i){
if(counting[i]){
arrayOne[size1++] = i;
}
}
printf("result arrayOne = { ");
for(i=0;i<size1;++i)
printf("%d ", arrayOne[i]);//{ 4 }
printf("}\n");
return 0;
}