zoukankan      html  css  js  c++  java
  • [USACO]Stringsobits

    题意:问你长度为n的二进制数,其中1的个数 <= k 的第 m 大的数是多少

    解题思路:这种题目都可以用递归的思路来解决。从高位到低位开始枚举(枚举如果这一位是1,看最多有多少种情况。是否大于当前的m)

    解题代码:

     1 // File Name: kimbits.c
     2 // Author: darkdream
     3 // Created Time: 2014年02月28日 星期五 19时02分25秒
     4 /*
     5 ID: dream.y1
     6 PROG: kimbits
     7 LANG: C++
     8 */
     9 #include<stdio.h>
    10 #include<string.h>
    11 #include<stdlib.h>
    12 #include<time.h>
    13 #include<math.h>
    14 int hs[40];
    15 int map[33][33];
    16 void init()
    17 {
    18     memset(map,0,sizeof(map));
    19     map[0][0] =1 ; 
    20     for(int i = 1;i <= 31 ;i ++)
    21     {
    22       map[i][0] = 1; 
    23       map[i][i] = 1; 
    24     }
    25     for(int i = 2;i <= 31;i ++)
    26         for(int j = 1;j < i ;j ++)
    27         {
    28           map[i][j] = map[i-1][j] + map[i-1][j-1];
    29         }
    30 }
    31 void solve(long long n , long long m , long long k )
    32 {
    33     long long sum[40];
    34     memset(sum,0,sizeof(sum));
    35     for(int i = 0;i <= n;i ++)
    36     {
    37        sum[i] = 0; 
    38        for(int  j = 0;j <= m;j ++)
    39        {
    40          sum[i] += map[i][j];
    41        }
    42        if(sum[i] >= k )
    43        {
    44 
    45            hs[i] = 1;
    46            if(i == 1)
    47                return ;
    48            solve(i-1,m-1,k-sum[i-1]);
    49            break;
    50        }
    51     }
    52 }
    53 int main(){
    54    freopen("kimbits.in","r",stdin);
    55    freopen("kimbits.out","w",stdout);
    56     long long n , m , k ; 
    57    scanf("%lld %lld %lld",&n ,&m,&k);
    58    init();
    59    solve(n,m,k);
    60    for(int i = n ;i >= 1;i --)
    61        if(hs[i])
    62            printf("1");
    63        else printf("0");
    64    printf("
    ");
    65    return 0 ;
    66 }
    View Code
    没有梦想,何谈远方
  • 相关阅读:
    ADO.NET 根据实体类自动生成添加修改语句仅限Oracle使用
    C# 实体对象作为参数统一去除空格
    jQuery 前端复选框 全选 反选 下拉菜单联动
    C# 后台服务器端 Get 请求函数封装
    服务器404错误页面
    vue 封装公用函数
    Vue 生命周期
    Oracle 查看表结构
    ubuntu源配置
    外观(Facade)模式
  • 原文地址:https://www.cnblogs.com/zyue/p/3580966.html
Copyright © 2011-2022 走看看