100個學生圍一圈回圈報數,遇9退出,問學生的出圈順序
uj5u.com熱心網友回復:
用list,將1到100依次insert進list中,然后模擬報數,到9,19,29.....的元素移除鏈表,一直這么模擬操作,每移除一個元素就列印一下它的編號即可。難點就是要處理鏈表成環的情況。uj5u.com熱心網友回復:
for example
#include <iostream>
#include <list>
using namespace std;
int main(int argc, const char * argv[]) {
int cnt = 0, tmp;
list<int> l; //用list保存學生編號
for (int i=0; i<100; i++) {
l.push_back(i+1);
}
while (l.size()>0) { //如果學生圈里還有人則一直回圈游戲
tmp = l.front(); //獲得排在list的開頭的學生編號
l.pop_front();//排在list的開頭的學生站出來
cnt++; //報數
if (cnt%10==9 || cnt%100>=90 || cnt%1000>=900) { //如果報數中個十百位任意一位有9則站出來的學生從佇列中則出局
printf("報數:%d,出局編號:%d\n", cnt, tmp);
} else {
l.push_back(tmp); //否則站出來的學生繼續排在佇列的最后
}
}
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/52123.html
標籤:C++ 語言
上一篇:聽說Memcache你很豪橫?-------------深入剖析Memcache 安裝及管理資料庫操作
下一篇:c語言
