zoukankan      html  css  js  c++  java
  • 产生数

    给出一个整数n (n < 103)和k个变换规则(
    k≤15)。
    规则:

    • -位数可变换成另一个位数:规则的右部不能
      为零。
      例如: n= 234。有规则(k= 2) :
      2→5
      3→6
      上面的整数234经过变换后可能产生出的整数
      为(包括原数) :
      234
      534
      264
      564
      共4种不同的产生数
      问题:给出一个整数n和k个规则。
      求出:经过任意次的变换(0 次或多次),能产
      生出多少个不同整数。仅要求输出个数。
      输入格式
      输入格式为:
      nk
      21Y1.
      X2 Y2
      … …
      Xn Yn
      输出格式
      一个整数 (满足条件的个数)。
      样例输入
      234 2
      25
      36
      样例输出
      4
      思路:计算每个位置上的数字能有多少种方案,然后把所有的数字乘起来就是答案了。
    #include <iostream>
    #include <cstring>
    using namespace std;
    bool op[10][10];
    string str;
    int vis[10];
    int value[32], ss;
    int maxlen = 1;
    void dfs(int a)
    {
        if (vis[a])
            return;
        vis[a] = true;
        ss++;
        for ( int i = 0;i <= 9; ++i)
        {
            if (op[a][i])
                dfs(i);
        }
    }
    
    void multiple(int x)
    {
        int carry = 0;
        for (int i = 1; i <= maxlen; ++i)
        {
            value[i] = value[i] * x + carry;
            carry = value[i] / 10;
            value[i] %= 10;
        }
        while (carry)
        {
            value[++maxlen] = carry % 10;
            carry /= 10;
        }
        return;
    }
    
    int main()
    {
        int n, m , i, j, k;
        int s;
        value[1] = 1;
        cin >> str >> k;
        int a, b;
        if ( k == 0)
        {
            cout << 1 << endl;
            return 0;
        }
        while (k--)
        {
            cin >> a >> b;
            op[a][b] = true;
        }
        int len = str.size();
        for (i = 0; i < len; ++i)
        {
            memset(vis,0,sizeof(vis));
            ss = 0;
            dfs(str[i] - '0');
            multiple(ss);
        }
        for (i = maxlen; i >= 1; i--)
        {
            cout << value[i];
        }
        cout << endl;
        return 0;
    }
    
    追求吾之所爱
  • 相关阅读:
    采购订单打印并预览PDF
    KiCad 如何在原理图添加元件时看到 PCB 封装?
    KiCad 开源元件库收集 (2019-05-31)
    KiCad 的 Digikey 元件库
    MySQL 出现 Host is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
    AD10 没有原理图是否可以修改 PCB
    KiCad 如何画板框
    当 1117 遇到 MLCC 后
    RequireJS 学习资料收集
    MEMS 硅麦资料收集
  • 原文地址:https://www.cnblogs.com/rstz/p/12393217.html
Copyright © 2011-2022 走看看