zoukankan      html  css  js  c++  java
  • 【递归】产生数

    问题 E: 【递归与递推】产生数

    题目描述

     给出一个整数n(n<1030)和m个变换规则(m≤20)。

    约定:一个数字可以变换成另一个数字,规则的右部不能为零,即零不能由另一个数字变换而成。而这里所说的一个数字就是指一个一位数。

    现在给出一个整数n和m个规则,要你求出对n的每一位数字经过任意次的变换(0次或多次),能产生出多少个不同的整数。


    输入

    共m+2行,第一行是一个不超过30位的整数n,第2行是一个正整数m,接下来的m行是m个变换规则,每一规则是两个数字x、y,中间用一个空格间隔,表示x可以变换成y。

    输出

    仅一行,表示可以产生的不同整数的个数。

    样例输入

    1 2 3
    2
    1 2
    2 3
    

    样例输出

    6
    #include <iostream>
    #include <cstring>
    #include <cstdio>
     
    using namespace std;
    int a[35],n,x,y,f[10];
    bool g[11][11];
    char s[65];
    void init() {
        for(int i = 0; i <= 9; i++) {
                f[i]= 0;
            for(int j = 0; j <= 9; j++) {
             if(i != j)   g[i][j] = false;
             else g[i][j] = true;
            }
        }
    }
    void floyd() {
        for (int k = 0; k <= 9; k++) {
            for (int i = 0; i <= 9; i++) {
                for(int j = 0; j<=9; j++) {
                if(g[i][k] && g[k][j]) g[i][j] =  true;
                }
            }
     
        }
     
    }
    int slove(){
        for(int i = 0; i <=9; i++){
            for(int j = 0; j<=9; j++){
                if(g[i][j]) f[i]++;
            }
        }
        int sum  = 1;
        int len = strlen(s);
        for(int i = 0; i < len; i++){
            if(s[i] == ' ') continue;
            else
            {
                sum *= f[s[i]-'0'];
            }
        }
        return sum;
    }
    int main() {
        init();
        gets(s);
        scanf("%d", &n);
        for(int i = 0; i < n; i++) {
            scanf("%d%d", &x, &y);
            g[x][y] = true;
        }
        floyd();
        printf("%d
    ",slove());
        return 0;
    }
    View Code
  • 相关阅读:
    android中添加只有border-left的样式
    TreeSet, LinkedHashSet and HashSet 的区别
    android添加桌面悬浮窗
    Android 桌面小部件
    专辑一:爱之初体验(中级)
    电影 — 百度云资源搜索网站
    托福单词-第三天
    程序代码英语积累
    托福单词-第二天
    托福单词-第一天
  • 原文地址:https://www.cnblogs.com/cshg/p/5641827.html
Copyright © 2011-2022 走看看