首页 > 代码库 > Uva133 - The Dole Queue
Uva133 - The Dole Queue
题意
n个人围城一个环,逆时针编号1~n,A从1开始逆时针数K个,B从n顺时针数M个,被选中的1或2个人一次领救济金,输出顺序
思路
双向约瑟夫环,公式没推出来,用的模拟
总结
开始用的数组模拟链表写的,WA了,打算再改改。不知道为什么这道题卡了很久总不对。
模拟:
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <algorithm> 5 using namespace std; 6 const int maxn = 25; 7 int n, k, m; 8 int a[maxn]; 9 int main() 10 { 11 //freopen("in.txt", "r", stdin); 12 13 while(cin >> n >> k >> m && n){ 14 for(int i = 1; i <= n; i++) 15 a[i] = i; 16 int left = n; 17 int p1 = 1, p2 = n; 18 while(left){ 19 int cnt = 0; 20 for(; cnt != k;p1++){ 21 if(p1 == n+1) p1 = 1; 22 if(a[p1]) cnt++; 23 24 } 25 p1--; 26 for(cnt = 0; cnt != m; p2--){ 27 if(p2 == 0) p2 = n; 28 if(a[p2]) cnt++; 29 30 } 31 p2++; 32 printf("%3d", p1); 33 left--; 34 if(p2 != p1){ 35 printf("%3d", p2); 36 left--; 37 } 38 a[p1] = a[p2] = 0; 39 if(left) printf(","); 40 } 41 printf("\n"); 42 } 43 return 0; 44 }
Uva133 - The Dole Queue
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。