WA求调
  • 板块学术版
  • 楼主vandijk
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/2/9 15:06
  • 上次更新2023/10/28 09:10:52
查看原帖
WA求调
340345
vandijk楼主2022/2/9 15:06

UVA220

求调,RT,谢谢

WA了

#include <bits/stdc++.h>
#define rep(i,n) for(int i=0;i<n;i++)
#define forn(i,a,b) for(int i=a;i<b;i++)
#define ALL(s) s.begin(),s.end()
#define ll long long
using namespace std;
const int n=8;
const int dx[]={1,-1,0,0,1,-1,1,-1};
const int dy[]={0,0,1,-1,-1,-1,1,1};
char c[10][10];
vector<pair<int,int> > v;
inline bool ok(int x,int y,int pe){
	if(!(c[x][y]=='*'))return false;
    for(int k=0;k<8;k++){
        int ax=x+dx[k],ay=y+dy[k];
        if(ax>=0&&ax<n&&ay>=0&&ay<n&&(c[ax][ay]-'0')!=pe&&c[ax][ay]!='*'){
            while(ax>=0&&ax<n&&ay>=0&&ay<n){
                if(!(ax+dx[k]>=0&&ax+dx[k]<n&&ay+dy[k]>=0&&ay+dy[k]<n))break;
                else{
                    ax=ax+dx[k];
                    ay=ay+dy[k];
                    if(c[ax][ay]!=c[ax-dx[k]][ay-dy[k]])break;
//					cout<<x<<" "<<y<<" "<<ax<<" "<<ay<<" "<<c[ax][ay]<<endl;
                }
            }
            if((c[ax][ay]-'0')==pe)return true;
        }
    }
    return false;
}
inline void doo(int x,int y,int pe){
    for(int k=0;k<8;k++){
        int ax=x+dx[k],ay=y+dy[k];
        if(ax>=0&&ax<n&&ay>=0&&ay<n&&(c[ax][ay]-'0')!=pe&&c[ax][ay]!='*'){
            while(ax>=0&&ax<n&&ay>=0&&ay<n){
                if(!(ax+dx[k]>=0&&ax+dx[k]<n&&ay+dy[k]>=0&&ay+dy[k]<n))break;
                else{
                    ax=ax+dx[k];
                    ay=ay+dy[k];
                    if(c[ax][ay]!=c[ax-dx[k]][ay-dy[k]])break;
                }
            }
            if((c[ax][ay]-'0')==pe){
				int tax=x,tay=y;
				while(tax!=ax||tay!=ay){
					tax+=dx[k],tay+=dy[k];
					c[tax][tay]=(char)(pe+'0');
				}
			}
        }
    }
	return ;
}
void solve(){
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            cin>>c[i][j];
            if(c[i][j]=='B')c[i][j]='1';
            else if(c[i][j]=='W')c[i][j]='0';
            else if(c[i][j]=='-')c[i][j]='*';
        }
    }
    int p;
    char cc;
    cin>>cc;
    if(cc=='W')p=0;
    else if(cc=='B')p=1;
    while(cin>>cc){
        if(cc=='Q'){
            for(int i=0;i<n;i++){
                for(int j=0;j<n;j++){
					if(c[i][j]=='*')cout<<"-";
					else if(c[i][j]=='0')cout<<"W";
					else if(c[i][j]=='1')cout<<"B";
                }
                if(i!=n-1)cout<<endl;
            }
            break;
        }
        if(cc=='L'){
            v.clear();
            for(int i=0;i<n;i++){
                for(int j=0;j<n;j++){
                    if(ok(i,j,p)){
                        v.push_back(make_pair(i+1,j+1));
                    }
                }
            }
            if(v.empty()){
                cout<<"No legal move."<<endl;
            }
            else{
                for(int i=0;i<v.size();i++){
                    cout<<"("<<v[i].first<<","<<v[i].second<<")";
                    if(i!=v.size()-1){
                        cout<<" ";
                    }
                }
                cout<<endl;
            }
        }
		if(cc=='M'){
			cin>>cc;
			int x=(int)(cc-'0');
			cin>>cc;
			int y=(int)(cc-'0');
			x--,y--;
			if(!ok(x,y,p)){
				p^=1;
			}
			c[x][y]=(char)(p+'0');
			doo(x,y,p);
			int b=0,w=0;
			for(int i=0;i<n;i++){
				for(int j=0;j<n;j++){
					if(c[i][j]=='1')b++;
					else if(c[i][j]=='0')w++;
				}
			}
			printf("Black - %2d White - %2d\n",b,w);
			p^=1;
		}
    }
    return ;
}
int main(){
//	freopen("Othello.txt","w",stdout);
    int TTT;
    cin>>TTT;
	for(int i=1;i<=TTT;i++){
		solve();
		if(i!=TTT)cout<<endl;
	}
    return 0;
}
2022/2/9 15:06
加载中...