7-22 jmu-ds-小孩報數問題 (15 分)
7-22 jmu-ds-小孩報數問題 (15 分)
有N個小孩圍成一圈,給他們從1開始依次編號,現指定從第W個開始報數,報到第S個時,該小孩出列,然後從下一個小孩開始報數,仍是報到S個出列,如此重複下去,直到所有的小孩都出列(總人數不足S個時將迴圈報數),求小孩出列的順序。
輸入格式:
第一行輸入小孩的人數N(N<=64) 接下來每行輸入一個小孩的名字(人名不超過15個字元) 最後一行輸入W,S (W < N),用逗號”,”間隔
輸出格式:
按人名輸出小孩按順序出列的順序,每行輸出一個人名
輸入樣例:
5
Xiaoming
Xiaohua
Xiaowang
Zhangsan
Lisi
2,3
輸出樣例:
Zhangsan
Xiaohua
Xiaoming
Xiaowang
Lisi
分析:約瑟夫環。這個題的資料錯了,真坑,同學們人肉資料發現,第二組需要用cin,其餘用getline,怎麼分辨的,不屈的同學們發現第二組的n小於等於4。。。好了。。。解決了
折柳我用的是雙向迴圈連結串列
程式碼:
#include <map>
#include <set>
#include <list>
#include <cmath>
#include <queue>
#include <stack>
#include <string>
#include <cstdio>
#include <vector>
#include <iomanip>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
#define ll long long
#define LIST_INIT_SIZE 100000
#define LISTINCREMENT 10
#define mod 256
#define lowbit(x) (x&(-x))
#define mem(a,b) memset(a,b,sizeof(a))
#define FRER() freopen("in.txt","r",stdin);
#define FREW() freopen("out.txt","w",stdout);
using namespace std;
const int maxn = 20 + 7;
char s[maxn];
int n;
typedef struct LNode{
string name;
struct LNode* next;
struct LNode* pre;
}LNode,*LinkList;
void CreateList(LinkList&L,int n){
L = (LinkList)malloc(sizeof(LNode));
LinkList p = L;
for(int i=1;i<=n;i++){
LinkList q = (LinkList)malloc(sizeof(LNode));
string ss;
if(n<5) cin>>ss;
else
getline(cin, ss);
q->name = ss;
p->next = q;
q->pre = p;
p = q;
}
p->next = L->next;
L->next->pre = p;
}
void print(LinkList&L){
LinkList p =L->next;
int n = 10;
while(n--){
cout<<p->name<<endl;
p = p->pre;
}
}
void fun(LinkList&L,int pos,int k,int n){
LinkList p = L->next;
for(int i=1;i<pos;i++) p = p->next;
while(p->next!=p){
for(int i=1;i<k;i++) p=p->next;
cout<<p->name<<endl;
p->pre->next = p->next;
p->next->pre = p->pre;
LinkList q = p;
p = p->next;
free(q);
}
cout<<p->name<<endl;
free(p);
free(L);
}
int main(){
int n,pos,k;
scanf("%d",&n);
if(n>=5)
getchar();
LinkList L;
CreateList(L, n);
// cout<<L->next->pre->next->name<<endl;
// print(L);
scanf("%d,%d",&pos,&k);
fun(L,pos,k,n);
}
相關文章
- 7-22 n queens (10分) 八皇后(n皇后)問題
- 7-23 jmu-ds-單連結串列的基本運算 (15 分)
- 7-1 汽車加油問題 (15分)
- 7-22 用天平找小球 (10分)
- 分庫分表經典15連問
- 1006 換個格式輸出整數 (15分)【java題解】Java
- 15.MyBatis傳入多個引數的問題MyBatis
- ●六數謎題●(15)
- 關於雲數倉存算分離的15個問答
- 整數劃分(硬幣問題)(dp)
- 漂亮11分數的數列:1/2~11/12構成的謎題(15)
- 7-15 報數(留個題目,還沒寫程式碼)
- NOI2003 逃學的小孩 題解
- L1-054 福到了 分數 15
- L1-035 情人節 分數 15
- L1-019 誰先倒 分數 15
- 1016 部分A+B (15分)【java題解】Java
- L1-025 正整數A+B 分數 15
- L1-062 幸運彩票 分數 15
- L1-070 吃火鍋 分數 15
- 7-24 猜數字遊戲 (15分)遊戲
- jquery分頁外掛呼叫報錯的問題:$(.).pagination is not a functionjQueryFunction
- 【演算法】GPLT - 基礎梯級練習題 - 個位數統計(15分)演算法
- 問題 B: NOIP2009普及組第2題 分數線劃定
- L1-044 穩贏 分數 15.cpp
- L1-093 猜帽子游戲 分數 15
- L1-085 試試手氣 分數 15
- L1-069 胎壓監測 分數 15
- L1-016 查驗身份證 分數 15
- 習題2-2 階梯電價 (15分)
- 最大數問題
- 第15篇 執行緒鎖的問題執行緒
- L1-050 倒數第N個字串 (15分)字串
- Android 面試 15 家大廠,這個問題是必問!Android面試
- 記錄解決HttpServletResponse在引數報錯的問題HTTPServlet
- #數位DP 計數問題
- 雙模數問題 題解
- 51nod 1597 有限揹包計數問題 (揹包 分塊)