1 solutions

  • 0
    @ 2025-11-5 15:43:35

    C++ :

    #include<stdio.h>
    #include<string.h>
    char a[6][6];
    int b[6][6];  
    int all;
    int n;
    int max(int as,int ad)
    {
    	if (as>ad) return as;
    	else return ad;
    }
    int min(int as,int ad)
    {
    	if (as<ad) return as;
    	else return ad;
    }
    int  check(int x,int y)
    {
    	int xx=1;
    	for (int i=x;i<(min(n,x+2));i++)
    	{
    		if (b[i][y]==2&&i!=x) break;
    		if (b[i][y]==1||b[x][y]==2) {xx=0;break;}
    	}
    	for (int i=x;i>=max(x-2,0);i--)
    	{
    		if (b[i][y]==2) break;
    		if (b[i][y]==1) {xx=0;break;}
    	}
    	for (int i=y;i<min(y+2,n);i++)
    	{
    		if (b[x][i]==2&&i!=y) break;
    		if (b[x][i]==1||b[x][y]==2) {xx=0;break;}
    	}
    	for (int i=y;i>=max(y-2,0);i--)
    	{
    		if (b[x][i]==2) break;
    		if (b[x][i]==1) {xx=0;break;}
    	}
    	return xx;
    }
    
    
    void dfs(int kk,int x,int y)
    {
    	if (kk>all) all=kk;
    	for (int i=y+1;i<n;i++)
    	{
    		//printf("(%d,%d)=%d\n",x,i,b[x][i]);
    		if (check(x,i))
    				{
    					
    					b[x][i]=1;
    					dfs(kk+1,x,i);
    					b[x][i]=0;
    				}
    	}
    	for (int i=x+1;i<n;i++)
    		{
    			for (int j=0;j<n;j++)
    			{
    				//printf("(%d,%d)=%d\n",i,j,b[i][j]);
    				if (check(i,j))
    				{
    					
    					b[i][j]=1;
    					dfs(kk+1,i,j);
    					b[i][j]=0;
    				}
    			}
    		}
    }
    int main()
    {
    	while(scanf("%d",&n)!=EOF&&n!=0)
    	{
    		getchar();
    		memset(b,0,sizeof(b));
    		for (int i=0;i<n;i++)
    		{
    			for (int j=0;j<n;j++)
    			{
    				scanf("%c",&a[i][j]);
    				if (a[i][j]=='X') b[i][j]=2;
    			}
    			getchar();
    		}
    		all=0;
    		for (int i=0;i<n;i++)
    		{
    			for (int j=0;j<n;j++)
    			{
    				if (check(i,j))
    				{
    				
    					b[i][j]=1;
    					int sum=1;
    					dfs(sum,i,j);
    					b[i][j]=0;
    				}
    			}
    		}
    		printf("%d\n",all);
    	}
    	return 0;
    }
    
    • 1

    Information

    ID
    17094
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By