uva227 puzzle
来源:互联网 发布:写作起名软件 编辑:程序博客网 时间:2024/05/22 04:51
#includeint main(){ int x,y,cnt=0; char s[5][6],c; while(true){ cnt++; for(int i=0;i<5;i++){ for(int j=0;j<5;j++){ scanf("%c",&s[i][j]); if(s[i][0]=='Z'){ return 0; } } c=getchar(); s[i][5]='\0'; } int fg=1; for(x=0;x<5;x++){ for(y=0;y<5;y++){ if(s[x][y]==' '){ fg=0; break; } } if(fg==0)break; } fg=1; while((c=getchar())!='0'){ if(c=='A'){ if(x==0) { fg=0; continue; } else { s[x][y]=s[x-1][y]; s[x-1][y]=' '; x-=1; } } if(c=='B'){ if(x==4) { fg=0; continue; } else { s[x][y]=s[x+1][y]; s[x+1][y]=' '; x+=1; } } if(c=='L'){ if(y==0) { fg=0; continue; } else { s[x][y]=s[x][y-1]; s[x][y-1]=' '; y-=1; } } if(c=='R'){ if(y==4) { fg=0; continue; } else { s[x][y]=s[x][y+1]; s[x][y+1]=' '; y+=1; } } } c=getchar();//IMPORTANT if(fg){ if(cnt!=1) putchar('\n'); printf("Puzzle #%d:\n",cnt); for(int i=0;i<5;i++){ for (int j=0;j<5;j++){ putchar(s[i][j]); if(j!=4) putchar(' '); } printf("\n"); } } else{ if(cnt!=1) putchar('\n'); printf("Puzzle #%d:\n",cnt); printf("This puzzle has no final configuration.\n"); } } return 0;}
笔记:
1 对输入的移动要求可以占多行这个特点,利用while((c=getchar()!='0')把ABRL之外的字符都吞掉了而不受影响;
2 输出格式很严格,如正确输出congifuration时每个字母之间有一个空格,暗示着每行第一个字母前和最后一个字母后都没有空格;每个输出之间要空一行,但最后一个输出之后不能有空行,这就需要通过设置一个first变量(本代码中是直接利用了cnt)控制不是first的有效答案输出前输出一个空行。
阅读全文
0 0
- Uva227 - Puzzle
- Uva227.Puzzle
- UVA227-Puzzle
- UVa227 Puzzle
- uva227 - Puzzle
- Puzzle,UVa227
- uva227 - Puzzle
- [UVA227]Puzzle
- UVA227 puzzle
- UVa227 Puzzle
- UVA227 Puzzle
- UVa227 Puzzle
- UVa227:Puzzle
- UVa227 Puzzle
- UVa227 - Puzzle
- Uva227-Puzzle
- uva227 puzzle
- UVa227-Puzzle
- 数据集(人数统计、密度分析)
- 存储
- 动态生成input绑定事件无效如:blur
- ajax后台套用两层JSONOBJECT返回到前台的方法
- cfRound425B. Petya and Exam
- uva227 puzzle
- 图片边角形
- HDU1201-18岁生日
- DATAKIT.CrossManager.2017.1.Win32_64 2CD
- 2017多校1 b hdu 6034
- C/S、B/S架构的区别
- jQuery 选择器 first-child和first-of-type、 last-child和last-of-type的区别
- 两个栈实现一个队列
- AutoLayout 汇总