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
原创粉丝点击