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
    没有梦想,何谈远方
  • 相关阅读:
    二分图最大匹配的K&#246;nig定理及其证明
    HDOJ 2389 Rain on your Parade
    HDOJ 1083 Courses
    HDOJ 2063 过山车
    POJ 1469 COURSES
    UESTC 1817 Complete Building the Houses
    POJ 3464 ACM Computer Factory
    POJ 1459 Power Network
    HDOJ 1532 Drainage Ditches
    HDU 1017 A Mathematical Curiosity
  • 原文地址:https://www.cnblogs.com/zyue/p/3580966.html
Copyright © 2011-2022 走看看