我正在尝试制作一个纸牌游戏,我的计划是制作一个数组,首先保存 1-10,然后是 J-A,然后是颜色,因此三个不同的数组和带有整数和字符的不同变量。
但是,现在我遇到了这个问题,我想从数组中删除重复项,但我真的不知道该怎么做,我已经阅读了一些事实,但我需要更好的解释,它会看起来代码方面。
这是我的代码到目前为止的样子:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int arrays[10] = { 1,2,3,4,5,6,7,8,9,10 };
char* color[4] = { "Diamond", "Spade", "Heart", "Clubs" };
int i;
int *number;
srand(time(NULL));
for (i = 0; i < 10; i++) {
number = arrays[rand() % 10];
if (number ) { //Its here where i want to remove the duplicates
continue;
}
else {
printf("%d ", number);
}
}
system("pause");
return 0;
}
我将非常感谢有关如何执行此操作的解释,我尝试使用保存数组[i]的值的变量,但随后所有数字都将被删除。
最佳答案
我认为最好创建一个包含所有卡片(例如甲板)的数组,然后 shuffle数组,而不是使用随机选择.. 然后你就可以拿走前10张牌,没有任何重复。
理论上随机选择,你每次都可以选择已经“抽到”的牌,这会浪费时间(抽到的牌越多,碰到未抽到的牌的机会就越少)。
关于c - 从数组中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34309177/