zoukankan      html  css  js  c++  java
  • POJ 3185 DFS

    好像可以用高斯消元???

    但是用搜索写 这题就很水了。、。

    // by SiriusRen
    #include <bitset>
    #include <cstdio>
    using namespace std;
    bitset<20>b;
    int jy;
    bool dfs(int t,int pos)
    {
        if(!b.to_ulong())return 1;
        if(t>=jy)return 0;
        for(int i=pos;i<20;i++)
        {
            b.flip(i);
            if(i==0)b.flip(i+1);
            else if(i==19)b.flip(i-1);
            else b.flip(i+1),b.flip(i-1);
            if(dfs(t+1,i+1))return 1;
            b.flip(i);
            if(i==0)b.flip(i+1);
            else if(i==19)b.flip(i-1);
            else b.flip(i+1),b.flip(i-1);
        }
        return 0;
    }
    int main(){
        for(int i=0;i<20;i++){scanf("%d",&jy);if(jy)b[i]=1;}
        for(jy=0;jy<=20;jy++)
            if(dfs(0,0)){printf("%d
    ",jy);return 0;}
    }
    

    这里写图片描述

    #include <iostream>
    using namespace std;
    int bowl[25]={0},flip[25]={0};
    int main()
    {
        int i,cnt=100,tmp;
        for (i=1;i<21;i++)      cin >> bowl[i];
    
        flip[1] = tmp = 1;      //翻第一个
        for (i=2;i<21;i++)
            if ( flip[i] = (flip[i-2]^flip[i-1]^bowl[i-1]) )        tmp++;
        if ( tmp<cnt && (flip[19]^flip[20]^bowl[20])==0 )           cnt = tmp;
    
    
        flip[1] = tmp = 0;      //不翻第一个
        for (i=2;i<21;i++)
            if ( flip[i] = (flip[i-2]^flip[i-1]^bowl[i-1]) )        tmp++;
        if ( tmp<cnt  && (flip[19]^flip[20]^bowl[20])==0 )      cnt = tmp;
        cout << cnt << endl;
    
        return 0;
    }

    还有人这么写 但是我不理解。。。

  • 相关阅读:
    洛谷p1056
    __int64
    杭电2057
    4.4清北学堂Day1 主要内容:数论,数学
    递推的一点理解
    高精度减法
    高精度加法
    p1184高手之在一起
    对于rqy今天讲座的一些理解和看法吧
    PHP.21-商品信息管理
  • 原文地址:https://www.cnblogs.com/SiriusRen/p/6532367.html
Copyright © 2011-2022 走看看