首页 > 代码库 > uva133 救济金发放
uva133 救济金发放
1 #include<stdio.h> 2 #define maxn 20 3 int a[maxn+5], n; 4 5 int go( int p,int d,int t ) 6 {// printf("a[%d]=%d\n",p,a[p]); 7 while( t-- ) 8 { //该题的核心所在 9 do{10 p = (p+d+n-1) % n +1;11 }while( a[p] == 0 );12 }13 return p;14 }15 16 int main()17 {18 int k, m, p1, p2;19 while( scanf("%d%d%d",&n, &k, &m) == 3 )20 {21 for( int i=1; i<=n; i++ ) a[i] = i;//位置初始化22 printf("\n");23 p1 = 0, p2 = n;24 int left=n;25 26 while(left)27 {//printf("a[p1]=%d,a[p2]=%d\t",a[p1],a[p2]);28 p1 = go( p1, 1,k );29 p2 = go( p2, -1,m );30 a[p1] = a[p2] = 0;31 32 //printf("p1=%d p2=%d\n\n",p1,p2); 33 34 printf("%3d",p1); left--;35 if( p1 != p2 ) { printf("%3d",p2); left--; }36 if(left) printf(",");37 }38 printf("\n");39 }40 return 0;41 }
本题让我体会到,acm不是简简单单的编程。每行代码都要经过思考才能写下去。
笔算是必须要经历的,先要在纸上写好核心的算法(思路)才能开始码代码。
正题:本体其实就是搜索的一种,将已查过的数标0来使搜索跳过而不用死板的去删去存储空间
另外 p = (p+d+n-1) % n +1; 完成了我自己五行代码完成的任务值得学习,写核心算法前一定要注意思考!!!!!
uva133 救济金发放
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。