3 条题解

  • 3
    @ 1 年前
    #include <iostream>
    #include <cstring>
    #include <queue>
    using namespace std;
    const int n = 5;
    char a[n][n];
    char g[n][n];
    void click(int x,int y)
    {
    	if(x>0)
    		a[x-1][y] ^=1;
    	if(y>0)
    		a[x][y-1] ^=1;
    	if(x<4)
    		a[x+1][y] ^=1;
    	if(y<4)
    		a[x][y+1] ^=1;
    	a[x][y] ^= 1;
    }
    int read()
    {
    	char c;
    	c = getchar();
    	int ans = 0;
    	while(c>='0'&&c<='9')
    	{
    		ans = ans*10+ (c-'0');
    		c = getchar();
    	}
    
    	return ans;
    }
    int main()
    {
    	int m;
    	cin>>m;
    	while(m--)
    	{
    		for(int i=0;i<5;i++)
    			cin>>a[i];
    		memcpy(g,a,sizeof(a));
    		int minn = 30;
    		for(int i=0;i<32;i++)
    		{
    			int ans = 0;
    			for(int j=0;j<5;j++)
    				if(i&(1<<j))
    				{
    					click(0,j);
    					ans++;
    				}
    			for(int j=0;j<4;j++)
    			{
    				for(int k=0;k<5;k++)
    				{
    					if(a[j][k] == '0')
    					{
    						click(j+1,k);
    						ans++;
    					}
    				}
    			}
    			bool flag = true;
    			for(int j=0;j<5;j++)
    			{
    				if(a[4][j] == '0')
    				{
    					flag = false;
    					break ;
    				}
    			}
    			if(flag)
    				minn = min(minn,ans);
    			memcpy(a,g,sizeof(a));
    
    		}
    		if(minn > 6)
    			cout<<-1<<endl;
    		else
    			cout<<minn<<endl;
    	}
    	return 0;
    }
    
    • 1

      #include #include #include using namespace std; const int n = 5; char a[n][n]; char g[n][n]; void click(int x,int y) { if(x>0) a[x-1][y] ^=1; if(y>0) a[x][y-1] ^=1; if(x<4) a[x+1][y] ^=1; if(y<4) a[x][y+1] ^=1; a[x][y] ^= 1; } int read() { char c; c = getchar(); int ans = 0; while(c>='0'&&c<='9') { ans = ans*10+ (c-'0'); c = getchar(); }

      return ans;
      

      } int main() { int m; cin>>m; while(m--) { for(int i=0;i<5;i++) cin>>a[i]; memcpy(g,a,sizeof(a)); int minn = 30; for(int i=0;i<32;i++) { int ans = 0; for(int j=0;j<5;j++) if(i&(1<<j)) { click(0,j); ans++; } for(int j=0;j<4;j++) { for(int k=0;k<5;k++) { if(a[j][k] == '0') { click(j+1,k); ans++; } } } bool flag = true; for(int j=0;j<5;j++) { if(a[4][j] == '0') { flag = false; break ; } } if(flag) minn = min(minn,ans); memcpy(a,g,sizeof(a));

      	}
      	if(minn > 6)
      		cout<<-1<<endl;
      	else
      		cout<<minn<<endl;
      }
      return 0;
      

      }

      • 0
        #include<bits/stdc++.h>
        using namespace std;
        const int n = 5;
        char a[n][n];
        char g[n][n];
        void click(int x,int y)
        {
        	if(x>0)
        		a[x-1][y] ^=1;
        	if(y>0)
        		a[x][y-1] ^=1;
        	if(x<4)
        		a[x+1][y] ^=1;
        	if(y<4)
        		a[x][y+1] ^=1;
        	a[x][y] ^= 1;
        }
        int read()
        {
        	char c;
        	c = getchar();
        	int ans = 0;
        	while(c>='0'&&c<='9')
        	{
        		ans = ans*10+ (c-'0');
        		c = getchar();
        	}
        
        	return ans;
        }
        int main()
        {
        	int m;
        	cin>>m;
        	while(m--)
        	{
        		for(int i=0;i<5;i++)
        			cin>>a[i];
        		memcpy(g,a,sizeof(a));
        		int minn = 30;
        		for(int i=0;i<32;i++)
        		{
        			int ans = 0;
        			for(int j=0;j<5;j++)
        				if(i&(1<<j))
        				{
        					click(0,j);
        					ans++;
        				}
        			for(int j=0;j<4;j++)
        			{
        				for(int k=0;k<5;k++)
        				{
        					if(a[j][k] == '0')
        					{
        						click(j+1,k);
        						ans++;
        					}
        				}
        			}
        			bool flag = true;
        			for(int j=0;j<5;j++)
        			{
        				if(a[4][j] == '0')
        				{
        					flag = false;
        					break ;
        				}
        			}
        			if(flag)
        				minn = min(minn,ans);
        			memcpy(a,g,sizeof(a));
        
        		}
        		if(minn > 6)
        			cout<<-1<<endl;
        		else
        			cout<<minn<<endl;
        	}
        	return 0;
        }
        
        • 1

        信息

        ID
        8
        时间
        1000ms
        内存
        128MiB
        难度
        2
        标签
        递交数
        268
        已通过
        158
        上传者