程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> ZOJ 3810 A Volcanic Island 構造題

ZOJ 3810 A Volcanic Island 構造題

編輯:C++入門知識

ZOJ 3810 A Volcanic Island 構造題


題目鏈接:點擊打開鏈接


學弟是厲害啊。。

#include 
#include 
#include 
#include 
#include 
using namespace std;
int vis[110][110],a[110][110],n;
void fuck1()
{
	for(int ii=1;ii<=n/2;ii++)//7
	{
		int i=n,j=ii;
		int num=0;
		while(1)
		{
			if(ii%2==1)
			{
				a[i][j]=2;
				if(a[i-1][j]==0)
					i--;
				else
					j++;
			}
			else
			{
				a[i][j]=3;
				if(a[i-1][j]==0)
					i--;
				else
					j++;
			}
			num++;
			if(num==n)
				break;
		}
	}
	int i=n/2+2,j=n/2+1;
	int num=0;
	while(1)
	{
		a[i][j]=4;
		if(a[i-1][j]==0)
			i--;
		else
			j++;

		num++;
		if(num==n)
			break;
	}
	for(int ii=(n-1)/2+3;ii<=n;ii++)
	{
		int i=n,j=ii-2;
		int num=0;
		while(1)
		{
			if(ii%2==1)
			{
				a[i][j]=2;
				if(a[i-1][j]==0)
					i--;
				else
					j++;
			}
			else
			{
				a[i][j]=3;
				if(a[i-1][j]==0)
					i--;
				else
					j++;
			}
			num++;
			if(num==n)
				break;
		}
	}
}
void fuck2()
{
	for(int ii=1;ii<=n/2;ii++)//9
	{
		int i=n,j=ii;
		int num=0;
		while(1)
		{
			if(ii%2==1)
			{
				a[i][j]=2;
				if(a[i-1][j]==0)
					i--;
				else
					j++;
			}
			else
			{
				a[i][j]=3;
				if(a[i-1][j]==0)
					i--;
				else
					j++;
			}
			num++;
			if(num==n)
				break;
		}
	}
	int i=n/2+2,j=n/2+1;
	int num=0;
	while(1)
	{
		a[i][j]=4;
		if(a[i-1][j]==0)
			i--;
		else
			j++;
		num++;
		if(num==n)
			break;
	}
	for(int ii=(n-1)/2+3;ii<=n;ii++)
	{
		int i=n,j=ii-2;
		int num=0;
		while(1)
		{
			if(ii%2==1)
			{
				a[i][j]=2;
				if(a[i-1][j]==0)
					i--;
				else
					j++;
			}
			else
			{
				a[i][j]=3;
				if(a[i-1][j]==0)
					i--;
				else
					j++;
			}
			num++;
			if(num==n)
				break;
		}
	}
}
void fuck3()
{
	for(int ii=1;ii<=n/2;ii++)//10
	{
		int i=n,j=ii;
		int num=0;
		while(1)
		{
			if(ii%2==1)
			{
				a[i][j]=2;
				if(a[i-1][j]==0)
					i--;
				else
					j++;
			}
			else
			{
				a[i][j]=3;
				if(a[i-1][j]==0)
					i--;
				else
					j++;
			}
			num++;
			if(num==n)
				break;
		}
	}
	int i=n/2+2,j=n/2+1;
	int num=0;
	while(1)
	{
		a[i][j]=4;
		if(a[i-1][j]==0)
			i--;
		else
			j++;

		num++;
		if(num==n)
			break;
	}
	for(int ii=n/2+3;ii<=n;ii++)
	{
		int i=n,j=ii-2;
		int num=0;
		while(1)
		{
			if(ii%2==1)
			{
				a[i][j]=2;
				if(a[i-1][j]==0)
					i--;
				else
					j++;
			}
			else
			{
				a[i][j]=3;
				if(a[i-1][j]==0)
					i--;
				else
					j++;
			}
			num++;
			if(num==n)
				break;
		}
	}
}
void fuck4()
{
	for(int ii=1;ii<=n/2;ii++)//8
	{
		int i=n,j=ii;
		int num=0;
		while(1)
		{
			if(ii%2==1)
			{
				a[i][j]=2;
				if(a[i-1][j]==0)
					i--;
				else
					j++;
			}
			else
			{
				a[i][j]=3;
				if(a[i-1][j]==0)
					i--;
				else
					j++;
			}
			num++;
			if(num==n)
				break;
		}
	}
	int i=n/2+2,j=n/2+1;
	int num=0;
	while(1)
	{
		a[i][j]=4;
		if(a[i-1][j]==0)
			i--;
		else
			j++;
		num++;
		if(num==n)
			break;
	}
	for(int ii=n/2+3;ii<=n;ii++)
	{
		int i=n,j=ii-2;
		int num=0;
		while(1)
		{
			if(ii%2==0)
			{
				a[i][j]=3;
				if(a[i-1][j]==0)
					i--;
				else
					j++;
			}
			else
			{
				a[i][j]=2;
				if(a[i-1][j]==0)
					i--;
				else
					j++;
			}
			num++;
			if(num==n)
				break;
		}
	}

}
int main ()
{
	int t;
	while(scanf("%d",&t)!=EOF)
	{
		while(t--)
		{
			memset(a,0,sizeof(a));
			scanf("%d",&n);
			if(n==1)
				printf("Y\n");
			else if(n==2||n==3||n==4)
				printf("No solution!\n");
			else if(n==6)
			{
				printf("YYYYYY\n");
				printf("RRBBBB\n");
				printf("YRRRRB\n");
				printf("YYBBGB\n");
				printf("YYBBGG\n");
				printf("YBBGGG\n");
			}
			else
			{
				memset(a,0,sizeof(a));
				for(int i=1;i<=n;i++)
					a[1][i]=1;
				if(n%2==1)//奇數
				{
					if((n/2)%2==1)//7
						fuck1();
					else//9
						fuck2();
				}
				else
				{
					if((n/2)%2==1)//10
						fuck3();
					else//8
						fuck4();
				}
				for(int i=1;i<=n;i++)
				{
					for(int j=1;j<=n;j++)
					{
						//printf("%d",a[i][j]);
						if(a[i][j]==1)
							printf("Y");
						else if(a[i][j]==2)
							printf("G");
						else if(a[i][j]==3)
							printf("R");
						else if(a[i][j]==4)
							printf("B");
					}
					printf("\n");
				}
			}
		}
	}
	return 0;
}


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved