• 产生数


    给出一个整数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;
    }
    
    追求吾之所爱
  • 相关阅读:
    Android studio 一些技术添加依赖,依赖库
    第三方集成之Mob-SMSSDk-短信验证
    使用友盟第三方集成实现QQ登录
    Android 日夜间切换Demo
    Sqlite数据库添加数据以及查询数据方法
    从网络获取json数据,使用imageloader获取网络图片资源并显示在ListView上
    检测Xcode项目不用的文件与图片
    Markdown语法
    iOS动画
    OC与JS交互之WKWebView
  • 原文地址:https://www.cnblogs.com/rstz/p/12393217.html
Copyright © 2020-2023  润新知