• Codeforces Round #359 (Div. 2) C. Robbers' watch DFS


    C. Robbers' watch

    链接:

    http://codeforces.com/contest/686/problem/C

    题意:

    给你n和m,找出(a,b)的对数,其中a满足要求:0<=a<n,a的7进制的位数和n-1的7进制的位数相同,b满足要求:0<=b<m,b的7进制的位数和m-1的7进制的位数相同,且a和b的7进制下的位上的数都不相同,即如果a的七进制数为10,b的7进制数为21,这种情况是不行的,因为重复了1

    题解:

    先计算n,m各需要多少位(注意7需要1位就够了,而不是两位),枚举每一位的数,一个标记数组就可以了,找完a再找b,注意中间的回溯,找完b检查一下就好了

    代码:

     1 #include<iostream>
     2 using namespace std;
     3 
     4 int n, m;
     5 int la = 1, lb = 1;
     6 int vis[10];
     7 int ans = 0;
     8 
     9 void dfs2(int k,int num)
    10 {
    11     if (k == lb) {
    12         ans++;
    13         return;
    14     }
    15     for (int i = 0; i <= 6; i++) {
    16         if (vis[i] == 0 && num * 7 + i < m) {
    17             vis[i] = 1;
    18             dfs2(k + 1, num * 7 + i);
    19             vis[i] = 0;
    20         }
    21     }
    22 }
    23 
    24 void dfs1(int k,int num)
    25 {
    26     if (k == la) {
    27         dfs2(0, 0);
    28         return;
    29     }
    30     for (int i = 0; i <= 6; i++) {
    31         if (vis[i] == 0 && num * 7 + i < n) {
    32             vis[i] = 1;
    33             dfs1(k + 1, num * 7 + i);
    34             vis[i] = 0;
    35         }
    36     }
    37 }
    38 
    39 int main()
    40 {
    41     cin >> n >> m;
    42     int fn = n, fm = m;
    43     if (n > 0)n--;
    44     if (m > 0)m--;
    45     while (n / 7) {
    46         la++;
    47         n /= 7;
    48     }
    49     while (m / 7) {
    50         lb++;
    51         m /= 7;
    52     }
    53     n = fn, m = fm;
    54     if (la + lb > 7) {
    55         cout << 0 << endl;
    56         return 0;
    57     }
    58     dfs1(0, 0);
    59     cout << ans << endl;
    60     return 0;
    61 }
  • 相关阅读:
    mysql创建账号
    CentOS 6.4下Squid代理服务器的安装与配置
    匿名函数 闭包
    array_values打破原有的数组key值,重新从0往上排序
    鹏哥yh搜索
    mosh的安装和使用
    提高php效率的技巧
    svn服务器配置
    限制input输入两位小数
    小程序弹出层覆盖不了canvas
  • 原文地址:https://www.cnblogs.com/baocong/p/5913936.html
Copyright © 2020-2023  润新知