我努力使我的计划有效,这是我们为假期做的学校功课,基本上这就是我们必须做的事情:
我们正在尝试用背包填充它的最大容量,同时使用给定列表中的objets来最大化它的价值。
我不会厌倦你的细节,所以我会直接去找我目前遇到问题的地方。
我有一个2d动态数组,我试图检查一行所述数组是否包含另一个数组中的一个元素,如果确实如此,我需要将所有内容放在该行上在第二个阵列中。
让我说我有这段代码:
int **exc, rexc, *lexc, i=0;
printf("\nHow many exclusion :");
scanf("%d", &rexc);
exc = malloc( sizeof(int *) * rexc);
for(i=0;i<rexc;i++){
printf("\nHow many elements in exclusion %d : ", i);
scanf("%d", &lexc[i]);
exc[i] = malloc( sizeof(Objet) * lexc[i]);
printf("\n the elements are :");
for(j=0;j<lexc[i];j++){
scanf("%d",&exc[i][j]);
}
}
有了这个,我已经初始化并填充了我的数组。 现在我有了另一个带有值的数组,让我们说它就像是 间[1] = {5,6} impos [1] = {3,7}
让我们说我们的2D阵列看起来像这样:
EXC [3] [3] = {3,6,2} {2,7,1} {5,2,4}
我需要做的是搜索我的2d数组,如果任何行包含3或7(它不能包含两者,我通过使用一个函数来检查它,确保在运行此函数之前没有问题),然后该行的每个其他元素都需要添加到inter []数组中。
我怎么想我做这项工作就是做这样的事情:
int count=0,i=0, j=0, k=0;
while(count<cimp){
for(i=0;i<rexc;i++){
for(j=0;j<lexc[i];j++){
if (exc[i][j] = impos[count])
for (k=0;k<lexc[i];k++){
if(k!=j){
inter[cinter+1]=exc[i][k];
cinter++;
}
}
}
count++;
}
cinter / cimp是一个变量,其中我存储了inter / impos中的元素数量。
我得到的结果有点时髦,这是一个输出:
How many exclusion : 3
How many elements in exclusion 1 : 3
the elements are : 3 6 2
How many elements in exclusion 2 : 3
the elements are : 2 7 1
How many elements in exclusion 3 : 3
the elements are : 5 2 4
How many obligatory elements : 1
Which are : 5
Forbidden list : 5 0 6 2 5 2 5 5 7 1 5 1 5 5 2 4 5 4 5
我还是习惯了C,希望我能得到你们的任何帮助,并且抱歉让它变得如此长!