POJ2996
来源:互联网 发布:伤感网络歌曲排行榜 编辑:程序博客网 时间:2024/05/22 03:19
POJ原址:POJ2996
第一次写完程序写了文章也还不轻松,因为还有一个2993,哭。
太需要耐心和细心了,可惜细心我一直都没有。
哎,修改了很多little points,程序里标出了,就不在这儿多说了。
值得一提的是,原来棋子的数目是不定的,在我以为white都搞定了,black也不过是类比的时候,发现black和white长得居然不一样,又把输出全部都改了一遍。
这代码简单粗暴又臭又长没内涵,没办法。
没有参考链接。
程序:
#include<iostream>using namespace std;int main(){char map[9][9],map1[9][33],map2[34][400];//map1数组用来扔掉行分隔符,map数组扔掉了所有分隔符 memset(map1,0,sizeof(map1));int i,j,x;for(i=0;i<17;i++) cin>>map2[i];for(i=0;i<17;i++) if(i%2!=0) strcpy(map1[i/2],map2[i]);//至此抽去了带元素的行 for(i=0;i<8;i++) { for(j=0;j<33;j++) { if(j%4==2) map[i][j/4]=map1[i][j]; } }//至此滤掉了棋盘所有分隔符 char kx[100],ky[100],qx[100],qy[100],rx[100],ry[100];char bx[100],by[100],nx[100],ny[100],px[100],py[100];memset(kx,0,sizeof(kx));memset(ky,0,sizeof(kx));memset(qx,0,sizeof(kx));memset(qy,0,sizeof(kx));memset(rx,0,sizeof(kx));memset(ry,0,sizeof(kx));memset(bx,0,sizeof(kx));memset(by,0,sizeof(kx));memset(nx,0,sizeof(kx));memset(ny,0,sizeof(kx));memset(px,0,sizeof(kx));memset(py,0,sizeof(kx));int k=0,q=0,r=0,b=0,n=0,p=0;//粗心,都没有赋初值怎么能不死循环 for(i=7;i>=0;i--) {for(j=0;j<=7;j++) { if(map[i][j]=='K') { kx[k]=j+'a';ky[k++]=8-i+'0'; } else if(map[i][j]=='Q') { qx[q]=j+'a'; qy[q++]=8-i+'0'; } else if(map[i][j]=='R') { rx[r]=j+'a'; ry[r++]=8-i+'0'; } else if(map[i][j]=='B') { bx[b]=j+'a'; by[b++]=8-i+'0'; } else if(map[i][j]=='N') { nx[n]=j+'a'; ny[n++]=8-i+'0'; } else if(map[i][j]=='P') { px[p]=j+'a'; py[p++]=8-i+'0'; } else ; } } cout<<"White: "; if(k!=0) for(k=0;kx[k]!=0&&ky[k]!=0;k++) cout<<'K'<<kx[k]<<ky[k]<<','; if(q!=0) for(q=0;qx[q]!=0&&qy[q]!=0;q++) cout<<'Q'<<qx[q]<<qy[q]<<','; if(r!=0) for(r=0;rx[r]!=0&&ry[r]!=0;r++) cout<<'R'<<rx[r]<<ry[r]<<','; if(b!=0) for(b=0;bx[b]!=0&&by[b]!=0;b++) cout<<'B'<<bx[b]<<by[b]<<','; if(n!=0) for(n=0;nx[n]!=0&&ny[n]!=0;n++) cout<<'N'<<nx[n]<<ny[n]<<',';int p_len=0; if(p!=0) {for(p=0;px[p]!=0&&py[p]!=0;p++) p_len++;for(p=0;p<p_len-1;p++) cout<<px[p]<<py[p]<<',';cout<<px[p_len-1]<<py[p_len-1];}cout<<endl;//white的输出结束memset(kx,0,sizeof(kx));memset(ky,0,sizeof(kx));memset(qx,0,sizeof(kx));memset(qy,0,sizeof(kx));memset(rx,0,sizeof(kx));memset(ry,0,sizeof(kx));memset(bx,0,sizeof(kx));memset(by,0,sizeof(kx));memset(nx,0,sizeof(kx));memset(ny,0,sizeof(kx));memset(px,0,sizeof(kx));memset(py,0,sizeof(kx));k=0;q=0;r=0;b=0;n=0;p=0; for(i=0;i<=7;i++) {for(j=0;j<=7;j++) { if(map[i][j]=='k') { kx[k]=j+'a';ky[k++]=i+1+'0'; } else if(map[i][j]=='q') { qx[q]=j+'a'; qy[q++]=i+1+'0'; } else if(map[i][j]=='r') { rx[r]=j+'a'; ry[r++]=i+1+'0'; } else if(map[i][j]=='b') { bx[b]=j+'a'; by[b++]=i+1+'0'; } else if(map[i][j]=='n') { nx[n]=j+'a'; ny[n++]=i+1+'0'; } else if(map[i][j]=='p') { px[p]=j+'a'; py[p++]=i+1+'0'; } else ; } } //注意所有输出都要用9-,因为记录的是次数而不是位置 //呵呵了,忘了都是字符,应该都用字符'9'来减 //好坑,这输出方式。。居然还一个是char一个是int,哎,尽力了,过了就好 cout<<"Black: "; if(k!=0) for(k=0;kx[k]!=0&&ky[k]!=0;k++) cout<<'K'<<kx[k]<<9-(ky[k]-'0')<<','; if(q!=0) for(q=0;qx[q]!=0&&qy[q]!=0;q++) cout<<'Q'<<qx[q]<<9-(qy[q]-'0')<<','; if(r!=0) for(r=0;rx[r]!=0&&ry[r]!=0;r++) cout<<'R'<<rx[r]<<9-(ry[r]-'0')<<','; if(b!=0) for(b=0;bx[b]!=0&&by[b]!=0;b++) cout<<'B'<<bx[b]<<9-(by[b]-'0')<<','; if(n!=0) for(n=0;nx[n]!=0&&ny[n]!=0;n++) cout<<'N'<<nx[n]<<9-(ny[n]-'0')<<',';p_len=0; if(p!=0) {for(p=0;px[p]!=0&&py[p]!=0;p++) p_len++;for(p=0;p<p_len-1;p++) cout<<px[p]<<9-(py[p]-'0')<<',';cout<<px[p_len-1]<<9-(py[p_len-1]-'0');}cout<<endl;return 0;}
0 0
- POJ2996
- poj2996
- poj2996
- poj2996
- poj2996
- POJ2996
- poj2996 模拟
- poj2996 模拟
- POJ2993&&POJ2996
- POJ2996-棋盘模拟
- poj2996解题报告
- POJ2996 & POJ2993 (模拟)
- poj2996 Help Me with the Game
- poj2996--Help Me with the Game
- POJ2996 - Help Me with the Game
- poj2996--Help Me with the Game
- POJ2996《Help Me with the Game》方法:模拟
- Help Me with the Game(poj2996模拟)
- delphi中临界操作方法
- VBS基础篇 - 对象(6) - Folder对象
- IOS开发笔记(8)Foundation Kit 学习
- Linux入门
- easyui datagrid editor checkbox 单击事件
- POJ2996
- maven pom文件详解
- 引用与指针的区别
- VBS基础篇 - 对象(7) - TextStream对象
- vs2008 设置文件
- _itoa atoi、atof、itoa、itow _itoa_s 类型转换使用说明
- Chrome插件(Extensions)开发攻略
- 在什么情况下需要进行开眼角修复的手术
- java中什么叫多重捕获MultiCatch,它的用法是怎样的?