Ejercicios 4_3uva220 Reversi

Ah curandero (risas se puede sentir)
Cuando Yo la mano que se abra un malformado en lugar de wow, ah curandero
Este es el sentimiento del primer amor!
¿Por malformación Negro -% 2d Blanco - 2d% (% 2d !!!!)
pensando fatalidad explosión tocarlo, no tan sólo ocho direcciones emmmmmm
primeras funciones de entrada y salida descritos (oído de llamada de arriba hacia abajo), dedicada a la función, tengan accidentes a ganar!
Detalles miran el código

#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;
} 

Realmente ah curandero del A!

Publicado 55 artículos originales · ganado elogios 1 · vistas 2671

Supongo que te gusta

Origin blog.csdn.net/qq_37548017/article/details/99467950
Recomendado
Clasificación