Uva--133 (线性表)

2014-06-16 15:43:57

题意&思路:简单环状表模拟。

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <iostream>
 4 using namespace std;
 5 
 6 int main(){
 7     int n,k,m,pk,pm;
 8     int cnt,used[25];
 9     while(scanf("%d %d %d",&n,&k,&m) == 3){
10         if(!n && !k && !m)
11             break;
12         memset(used,0,sizeof(used));
13         cnt = 0;
14         pk = 0;
15         pm = n + 1;
16         while(cnt < n){
17             for(int i = 0; i < k; i += !used[pk]){
18                 ++pk;
19                 if(pk > n)
20                     pk = 1;
21             }
22             for(int i = 0; i < m; i += !used[pm]){
23                 --pm;
24                 if(pm < 1)
25                     pm = n;
26             }
27             used[pk] = used[pm] = 1;
28             if(pk == pm){
29                 ++cnt;
30                 printf("%3d",pk);
31             }
32             else{
33                 cnt += 2;
34                 printf("%3d%3d",pk,pm);
35             }
36             if(cnt < n) printf(",");
37         }
38         puts("");
39     }
40     return 0;
41 }

 

posted @ 2014-06-16 15:44  Naturain  阅读(104)  评论(0编辑  收藏  举报