前端时间面腾讯的时候,一位老师问了一个相当有趣的问题:假设存在一个音乐播放器,里面有一个100首歌的歌单。现在需要做一个随机播放功能,要求不重复的随机播放完一百首歌。当时脑子短路了没想出来,几天突然意识到了问题的解法。
定义一个集合,将歌曲按照编号1-100存进集合,根据集合中剩余的元素数量做rand,每一次播放后删除即可。
简单写了点代码:
#include <iostream> #include <set> #include <time.h> using namespace std; int main() { srand(time(0)); set <int> st; for (int i = 1; i <= 10; i++) { st.insert(i); } while (!st.empty()) { int pos = rand() % st.size(); auto iter = st.begin(); for (int i = 0; i < pos; i++) { iter++; } cout << *iter << " "; st.erase(iter); } return 0; }
标签:set,int,一轮,播放,随机,100,include From: https://www.cnblogs.com/kazusarua/p/17135849.html