zoukankan      html  css  js  c++  java
  • UVa 253 骰子涂色

    https://vjudge.net/problem/UVA-253

    题意:输入两个骰子的六面颜色,判断是否等价。

    思路:我最想到的是暴力,不过一直错,也不知道哪里错了。第二种方法就是在一个骰子里出现的一对颜色在第二个骰子也有,只要三对颜色都匹配成功,那么就是等价的。

     1 #include<iostream>
     2 #include<string>
     3 #include<cstring>
     4 using namespace std;
     5 
     6 char str[20];
     7 int vis[20];
     8 int ok;
     9 
    10 int main()
    11 {
    12     //freopen("D:\txt.txt", "r", stdin);
    13     while (gets(str)!=NULL)
    14     {
    15         ok = 1;
    16         memset(vis, 0, sizeof(vis));
    17         for (int i = 0; i < 3;i++)
    18         for (int j = 6; j < 12; j++)
    19         {
    20             if (!vis[j] && str[i] == str[j] && str[5 - i] == str[17 - j])
    21             {
    22                 vis[j] = vis[17 - j] = 1;
    23                 break;           //这个break必须得加
    24             }
    25         }
    26         for (int i = 6; i < 12; i++)
    27         {
    28             if (!vis[i])
    29             {
    30                 ok = 0;
    31                 cout << "FALSE" << endl;
    32                 break;
    33             }
    34         }
    35         if (ok)  cout << "TRUE" << endl;
    36     }
    37     return 0;
    38 }

    再附上我的暴力,不过是wrong的。先留着吧,以后说不定我就能发现哪里错了。

     1 #include<iostream>
     2 #include<string>
     3 #include<cstring>
     4 using namespace std;
     5 
     6 char str[20], s1[7], s2[7], s3[7], s4[7];
     7 int vis[20];
     8 int ok;
     9 
    10 void solve(int cur)
    11 {
    12     if (cur == 3)
    13     {
    14         s3[6] = '';
    15         for (int k = 0; k < 3; k++)
    16         {
    17             s4[k] = s3[k + 3];
    18             s4[k + 3] = s3[k];
    19         }
    20         s4[6] = '';
    21         if (!strcmp(s1, s3) || !strcmp(s1, s4))
    22         {
    23             ok = 1;
    24         }
    25     }
    26     else
    27     {
    28         for (int i = 0; i < 3; i++)
    29         {
    30             if (ok) return;
    31             if (!vis[i])
    32             {
    33                 s3[cur] = s2[i];
    34                 s3[5 - cur] = s2[5 - i];
    35                 vis[i] = 1;
    36                 solve(cur + 1);
    37                 vis[i] = 0;
    38             }
    39         }
    40     }
    41 }
    42 
    43 int main()
    44 {
    45     //freopen("D:\txt.txt", "r", stdin);
    46     while (gets(str) != NULL)
    47     {
    48         memset(vis, 0, sizeof(vis));
    49         memcpy(s1, str, 6);
    50         memcpy(s2, str + 6, 6);
    51         s1[6] = '';
    52         s2[6] = '';
    53         ok = 0;
    54         solve(0);
    55         if (ok)        cout << "TRUE" << endl;
    56         else cout << "FALSE" << endl;
    57     }
    58     return 0;
    59 }
  • 相关阅读:
    命令行颜色换算器(基于python)
    VPS常用操作(自用)
    自动读取虚拟币ETC行情并语音提醒的小工具(mac OSX)
    nginx最基本操作
    一个平庸程序员的自白
    unity 2d游戏 按y坐标排序子对象
    开源输入法推荐
    unity插件,从一段文字中提取中文并去重
    考试总结(CE???)
    螺旋矩阵
  • 原文地址:https://www.cnblogs.com/zyb993963526/p/6298338.html
Copyright © 2011-2022 走看看