zoukankan      html  css  js  c++  java
  • COGS 2598. 美丽的感觉

    【题目描述】

    有两堆卡片,每堆卡片有n(4 ≤ n ≤ 1000)张,所有卡片中有n张是红色的,n张是蓝色的。现在要将卡片逐张取下,红的放在一起,蓝的放在一起,每堆卡片中只能取最上面的那张,且要求任意时刻,已取得的红色卡片数和蓝色卡片数相差不超过1张,问如何取,才能完成任务?

    【输入格式】

    第一行一个整数n,表示每堆卡片的张数。第二行有n个字符,表示第一堆的卡片颜色,第三行有n个字符,表示第二堆的卡片颜色。其中0代表红色,1代表蓝色,每行的第1个字符代表最上面的卡片颜色,第n个字符代表最下面的卡片颜色。

    【输出格式】

    如果存在完成任务的方案 请输出 “Accepted! ”否则 输出 “Impossible!”(无双引号)

    【样例输入】

    simple1 in:

    4

    0011

    0110

     

    simple2 in:

    4

    1100

    1100

    【样例输出】

    simple1 out:

    Accepted!

    simple2 out:

    Impossible!

    【提示】

    4 ≤ n ≤ 1000

    注意输出时带  ‘!’

    思路:DFS 即可 

       由于每次只拿出一个卡片 DFS 会T 两个点 

       我们用dp[i][j] 来记录状态 

       每次拿出两张卡片 如果当前状态已经搜到过 直接退出当前搜索

     1 #include <cstdio>
     2 #include <cctype>
     3 #include <algorithm>
     4 
     5 const int MAXN=1010;
     6 
     7 int n;
     8 
     9 bool dp[MAXN][MAXN];
    10 
    11 char a[MAXN],b[MAXN];
    12 
    13 bool DFS(int x,int y) {
    14     if(!x&&!y) return true;
    15     
    16     if(!dp[x][y]) dp[x][y]=true;
    17     else return false;
    18     
    19     if((x-2)>=0 && a[x-1] != a[x] && DFS(x-2,y)) return true;
    20     if((y-2)>=0 && b[y-1] != b[y] && DFS(x,y-2)) return true;
    21     if((x-1)>=0 && (y-1)>=0 && a[x] != b[y] && DFS(x-1,y-1)) return true;
    22     return false;
    23 }
    24 
    25 int hh() {
    26     freopen("card_.in","r",stdin);
    27     freopen("card_.out","w",stdout);
    28     
    29     scanf("%d",&n);
    30     scanf("%s",a+1);
    31     scanf("%s",b+1);
    32     
    33     if(DFS(n,n)) printf("Accepted!
    ");
    34     else printf("Impossible!
    ");
    35     
    36     return 0;
    37 }
    38 
    39 int sb=hh();
    40 int main(int argc,char**argv) {;}
    代码
  • 相关阅读:
    Android——活动的基本用法
    开课第五周周总结
    java常用框架
    javaweb学习
    每日日报2021.3.23
    每日日报2021.3.22
    每日日报2021.3.21
    每日日报2021.3.19
    每日日报2021.3.18
    每日日报2021.3.17
  • 原文地址:https://www.cnblogs.com/whistle13326/p/7717966.html
Copyright © 2011-2022 走看看