• K进制数


    题目描述
    考虑包含N位数字的K-进制数. 定义一个数有效, 如果其K-进制表示不包含两连续的0.
    
    考虑包含N位数字的K-进制数. 定义一个数有效, 如果其K-进制表示不包含两连续的0. 
    
    例: 
    1010230 是有效的7位数 
    1000198 无效 
    0001235 不是7位数, 而是4位数. 
    
    给定两个数N和K, 要求计算包含N位数字的有效K-进制数的总数. 
    
    假设2 <= K <= 10; 2 <= N; 4 <= N+K <= 18.
    
    输入
    两个十进制整数N和K
    
    输出
    十进制表示的结果
    
    样例输入
    2
    10
    样例输出
    90
    
    //K进制 递推牛逼 
    #include<stdio.h>
    int k;
    int f(int n)
    {
        if(n == 1)
        {
            return k-1;
        }
        else if(n == 2)
        {
            return (k-1)*k;
        }
        else
        {
            return f(n-1)*(k-1) + f(n-2)*(k-1) ;    }
    }
    int main()
    {
        int n;
        scanf("%d%d", &n, &k);
        printf("%d
    ",f(n));
        return 0;
    } 
    View Code

    不能连续两个0 与第一位不能为0,存在递推关系

    实际上是一个深搜问题   dfs

    1.最高位不能是0

    #include<iostream>
    using namespace std;
    
    int n,k;//n是位数,k是进制数
    char s[20];
    int total;
    void dfs(int cur){
        char temp;
        if(cur==n)
            total++;
        else
            for(int i=0;i<k;i++){
                temp = i+'0';
                if((cur==0 && temp == '0') || (temp == '0' && s[cur-1] == '0'))
                    continue;
                s[cur] = i+'0';
                dfs(cur+1);
            }
    }
    
    int main(){
        cin>>n>>k;
        dfs(0);
        cout<<total<<endl;
    }
    View Code
  • 相关阅读:
    Xampp 环境问题集合
    linux VI模式下批量修改文件内容
    shell 获取文件名
    shell 遍历所有文件包括子目录
    jmeter java 请求 payload
    [转]postman 官方文档解说
    承上启下——牛腩新闻发布系统总结
    ASP.NET——实现两个下拉框动态联动
    ASP.NET——真假分页
    HTML快速入门
  • 原文地址:https://www.cnblogs.com/helloworld2019/p/10534143.html
Copyright © 2020-2023  润新知