Exercises 4_3uva220 Reversi

Ah quack quack (can be felt laughter)
When I hand it to open a malformed rather than wow, ah quack quack
This is the feeling of first love!
Why malformed Black -% 2d White -% 2d (% 2d !!!!)
thinking doom explosion touch it, do not just eight directions emmmmmm
first input and output functions written (heard of called top-down), engaged in function, not crash you win!
Details look at the code

#include <bits/stdc++.h>
using namespace std;
char s[10][10],w[10][10];//输出才改其余以0开始 
int pan(char c,int &de,char q,int &ok,int &he) 
{
	if(c !='-' && c!=q) 
	{
		de++; return 1;
	}
	else if(c == q && de) 
	{
		ok++; he++;
	}
	return 0;
}
int okk(int x,int y,char q,int kk)//kk 0只找不改,1找到顺便改 
{
	//判断是否是真命天女 8方向...... 
	//勿忘每次初始化! 
	memset(w,0,sizeof(w));
	int ok = 0,de = 0,he = 0;
	for (int j = y+1; j < 8; j++)
	{
		char c = s[x][j];
		if(!pan(c,de,q,ok,he))
		{
			if(he)//如果可以找到标记一下下如果kk=1嘿嘿嘿~ 
			{
				for (int z = y+1; z < j;z++)  w[x][z] = 1;
			}
			break;
		}
	}//you
	de = 0,he = 0;
	for (int j = y-1; j >= 0; j--)
	{
		char c = s[x][j];
		if(!pan(c,de,q,ok,he))
		{
			if(he)
			{
				for (int z = y-1; z > j; z--) w[x][z] = 1;
			}
			break;
		}
	}//zuo
	de = 0,he = 0;
	for (int i = x+1; i < 8;i++)
	{
		char c = s[i][y];
		if(!pan(c,de,q,ok,he))
		{
			if(he)
			{
				for (int z = x+1; z < i; z++) w[z][y] = 1;
			}
			break;
		}
	}//xia
	de = 0,he = 0;
	for (int i = x-1; i >= 0;i--)
	{
		char c = s[i][y];
		if(!pan(c,de,q,ok,he))
		{
			if(he)
			{
				for (int z = x-1; z > i; z--) w[z][y] = 1;
			}
			break;
		}
	}//shang
	//四斜 
	de = 0,he = 0;
	for (int i = 1; i < 8;i++)
	{
		if(x-i < 0 || y-i < 0) break;
		char c = s[x-i][y-i];
		if(!pan(c,de,q,ok,he))
		{
			if(he)
			{
				for (int z = 1; z < i; z++) w[x-z][y-z] = 1;
			}
			break;
		}
	}
	de = 0,he = 0;
	for (int i = 1; i < 8;i++)
	{
		if(x+i >= 8 || y+i >= 8) break;
		char c = s[x+i][y+i];
		if(!pan(c,de,q,ok,he))
		{
			if(he)
			{
				for (int z = 1; z < i; z++) w[x+z][y+z] = 1;
			}
			break;
		}
	}
	de = 0,he = 0;
	for (int i = 1; i < 8;i++)
	{
		if(x-i < 0 || y+i >= 8) break;
		char c = s[x-i][y+i];
		if(!pan(c,de,q,ok,he))
		{
			if(he)
			{
				for (int z = 1; z < i; z++) w[x-z][y+z] = 1;
			}
			break;
		}
	}
	de = 0,he = 0;
	for (int i = 1; i < 8;i++)
	{
		if(x+i >= 8 || y-i < 0) break;
		char c = s[x+i][y-i];
		if(!pan(c,de,q,ok,he))
		{
			if(he)
			{
				for (int z = 1; z < i; z++) w[x+z][y-z] = 1;
			}
			break;
		}
	}
	//如果要1 
	if(ok && kk)
	{
		for (int i = 0; i < 8;i++)
		 for (int j = 0; j < 8;j++)
		 {
		 	if(w[i][j]) s[i][j] = s[i][j]=='W'?'B':'W';
		 }
	} //统统标记改了! 
	if(!ok) return 0;
	return 1;
}
void chao(char q)
{
	int ok = 0;
	for (int i = 0; i < 8;i++)
	  for (int j = 0; j < 8;j++)
	  {
	  	if(s[i][j]=='-' && okk(i,j,q,0)) // free
	  	{
	  		 if(!ok)
	  		 {
	  		 	printf("(%d,%d)",i+1,j+1); ok = 1;
	  		 }
	  		 else
	  		 {
	  		 	printf(" (%d,%d)",i+1,j+1);
	  		 }
	  	}
	  }
	if(!ok) printf("No legal move.");
		printf("\n");
}
int main()
{
	int t;
	scanf("%d",&t);
	for (int v = 0; v < t ;v++)
	{
		if(v) printf("\n");//每个之间要有空行 
		char q,buf[5];
		memset(s,'\0',sizeof(s));
		//initialize 
		for (int i = 0 ; i < 8 ;i++)
		{
			scanf("%s",s[i]);
		}
		scanf(" %c",&q);//前面空格同理防换行! 
		while(scanf("%s",buf))//用buf防换行完美! 
		{
			if(buf[0]=='Q') 
			{
				for (int i = 0; i < 8;i++)
				printf("%s\n",s[i]);
				break;
			}//结束嘛 
			else if(buf[0]=='L') chao(q);//找有何人可寻机会也 
			else if(buf[0]=='M') //指定人找机会也 
			{
				if( okk(buf[1]-'0'-1,buf[2]-'0'-1,q,1) );//-1因为存从0开始  
				else//找不到换人 
				{
					q = (q=='B')?'W':'B';
					okk(buf[1]-'0'-1,buf[2]-'0'-1,q,1);
				}
				s[buf[1]-'0'-1][buf[2]-'0'-1] = (q=='B')?'B':'W'; 
				//找到了总给人家机会嘛,加上去 
				int b = 0,w = 0;
				for (int i = 0; i < 8; i++)
				  for (int j = 0; j < 8; j++)
				  {
				  	if(s[i][j]=='B') b++;
				  	else if(s[i][j]=='W') w++;
				  }
				//直接暴力找了,要什么花里胡哨的找规律 
				printf("Black - %2d White - %2d\n",b,w);//22222222222222 
				q = (q=='B')?'W':'B';
			}
		}
		
	}
	return 0;
} 

Really ah quack quack A!

Published 55 original articles · won praise 1 · views 2671

Guess you like

Origin blog.csdn.net/qq_37548017/article/details/99467950