第七届蓝桥杯b组第五题-抽签

来源:互联网 发布:java安装包百度云 编辑:程序博客网 时间:2024/05/28 18:45

抽签

X星球要派出一个5人组成的观察团前往W星。
其中:
A国最多可以派出4人。
B国最多可以派出2人。
C国最多可以派出2人。
….

那么最终派往W星的观察团会有多少种国别的不同组合呢?

下面的程序解决了这个问题。
数组a[] 中既是每个国家可以派出的最多的名额。
程序执行结果为:
DEFFF
CEFFF
CDFFF
CDEFF
CCFFF
CCEFF
CCDFF
CCDEF
BEFFF
BDFFF
BDEFF
BCFFF
BCEFF
BCDFF
BCDEF
….
(以下省略,总共101行)

#include <stdio.h>#define N 6#define M 5#define BUF 1024void f(int a[], int k, int m, char b[]){    int i,j;    if(k==N){        b[M] = 0;        if(m==0) printf("%s\n",b);        return;    }    for(i=0; i<=a[k]; i++){        for(j=0; j<i; j++)            b[M-m+j] = k+'A';        ______________________;  //填空位置    }}int main(){    int  a[N] = {4,2,2,1,1,3};    char b[BUF];    f(a,0,M,b);    return 0;}

很明显的递归题,很久没做这种题了,自己写的时候将k+1写成了k++,诶!

答案:f(a, k+1, m-i, b);

0 0
原创粉丝点击