美文网首页
画家问题

画家问题

作者: qratosone | 来源:发表于2016-08-10 22:54 被阅读0次

http://cxsjsxmooc.openjudge.cn/test/Y/

代码

#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
using std::cin;
using std::cout;
using std::endl;
int map[20][20];//草稿
int copy[20][20];//原始记录
int line[20];//第一行
char col[20];//输入缓冲区
int n;
int min;
int count;
void draw(int x,int y){//画画并且增加次数
    map[x][y]=!map[x][y];
    map[x-1][y]=!map[x-1][y];
    map[x+1][y]=!map[x+1][y];
    map[x][y-1]=!map[x][y-1];
    map[x][y+1]=!map[x][y+1];
    count++;
}
bool guess(){
    //从第二行开始 判断每个点上边的点是否为黄色 如果不是黄色 则涂该点
    for(int i=2; i<=n; i++)
        for(int j=1; j<=n; j++)
            if(map[i-1][j] == 0)
                draw(i,j);


    //判断最后一行是否都为黄色 如果是则记录次数 否则提交失败
    for(int k=1; k<=n; k++)
        if(map[n][k] != 1)
            return false;
    if(count < min)
        min = count;
    return true;
}
void getLine(int k){
    //二进制枚举第一行
    int j=n;
    while(j>0){
        line[j]=k%2;
        k/=2;
        j--;
    }
}
int main(){
    int w;
    cin>>w;
    while(w--){
        cin>>n;
        min=n*n+1;
        for (int i = 1; i <=n; ++i) {
            scanf("%s",col);
            //一行一行扫描
            for (int j = 1; j <=n ; ++j) {
                if(col[j-1]=='w'){
                    copy[i][j]=0;
                }
                else{
                    copy[i][j]=1;
                }
            }
        }
        //开始枚举
        for (int k = 0; k <pow(2,n) ; ++k) {
            count=0;
            memcpy(map,copy, sizeof(copy));
            getLine(k);
            //枚举第一行
            for (int i = 1; i <=n ; ++i) {
                if(line[i]==1){
                    draw(1,i);
                }
            }
            guess();
        }
        if(min!=n*n+1){
            cout<<min<<endl;
        }
        else{
            cout<<"inf"<<endl;
        }
    }
    return 0;
}

相关文章

  • 画家问题

    http://cxsjsxmooc.openjudge.cn/test/Y/ 代码

  • 编程题#1: 画家问题

    编程题#1: 画家问题 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最...

  • 这张插画真好看

    插画转载于 PIXIV 上画家,有版权问题请私信我。

  • 为什么西方的画家特别喜欢画裸体?原因竟然这么简单!

    大家在欣赏画家作品的时候 是不是都有一个问题 为什么很多西方的画家都喜欢画裸体? 今天我们来聊一聊 为什么画家都热...

  • 迁徙

    迁徙 难民问题是世界问题,如何反映,能看出漫画家的水平。一个题目可以从各个角度去反映,折射出漫画家的高深修养。 经...

  • 画家的秘密

    一位青年画家碰到一位著名的画家,青年画家当即向他请教说:“尊敬的先生,有一个问题一直困扰着我,您能帮我解决这个疑惑...

  • 生活的世界决定眼界

    我生活的世界决定了我的眼界,我不知道画家的工作好不好,我不认识画家朋友,不知道一个普通画家能不能解决温饱问题。 老...

  • 请教画家们个问题

    想请教大家个问题—— 我没学过画画,这里的画是我最近拿起自动铅笔在白纸上画的。初中的时候有美术老师,应该不是他教了...

  • 【python】POJ编程题:画家问题

    画家问题 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 有一个正方形的墙,由N*N个正方形...

  • 读高居翰《江岸送别:明代初期与中期绘画(1368—1580)》

    这本书除介绍了众多的画家和画作,颇留意于地方派别和艺术家的归类问题。如归于“浙派”的画家,实则多有来自福建...

网友评论

      本文标题:画家问题

      本文链接:https://www.haomeiwen.com/subject/rsbjsttx.html