很奇怪,我几个月前刚回答过该问题。很久以前也回答过,JHQ 里找不到 :( 这个题的基本思路就是 random index,而不 random 数值本身。 int index[100]; for (int i = 1; i <= 100; ++i) index[i] = i; for (int i = 0; i < 100; ++i) { int swapIndex = random (100 - i); int t = index[i + swapIndex]; index[i + swapIndex] = index[i]; index[i] = t; }
【在 c*****t 的大作中提到】 : 很奇怪,我几个月前刚回答过该问题。很久以前也回答过,JHQ 里找不到 :( : 这个题的基本思路就是 random index,而不 random 数值本身。 : int index[100]; : for (int i = 1; i <= 100; ++i) : index[i] = i; : for (int i = 0; i < 100; ++i) : { : int swapIndex = random (100 - i); : int t = index[i + swapIndex]; : index[i + swapIndex] = index[i];
不好意思,你这个编译的时候怎么总报错啊? #include #include #include #include int main() { .... return 0; } g++编译的时候总报说: too many arguments to function `int random()' 怎么才能解决这个问题? 谢谢!
【在 c*****t 的大作中提到】 : 很奇怪,我几个月前刚回答过该问题。很久以前也回答过,JHQ 里找不到 :( : 这个题的基本思路就是 random index,而不 random 数值本身。 : int index[100]; : for (int i = 1; i <= 100; ++i) : index[i] = i; : for (int i = 0; i < 100; ++i) : { : int swapIndex = random (100 - i); : int t = index[i + swapIndex]; : index[i + swapIndex] = index[i];
this problem should be the same as an exercise in clrs in which it asks to shuffle a deck of card
【在 c*****t 的大作中提到】 : 很奇怪,我几个月前刚回答过该问题。很久以前也回答过,JHQ 里找不到 :( : 这个题的基本思路就是 random index,而不 random 数值本身。 : int index[100]; : for (int i = 1; i <= 100; ++i) : index[i] = i; : for (int i = 0; i < 100; ++i) : { : int swapIndex = random (100 - i); : int t = index[i + swapIndex]; : index[i + swapIndex] = index[i];
p*o
15 楼
just use std::random_shuffle ... don't make wheels