您的位置:首页 > 其它

【蓝桥杯 第七届省赛试题 抽签】

2017-04-07 20:35 337 查看
抽签

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行)

AC代码:

#include <stdio.h>
#define N 6
#define M 5
#define BUF 1024
int num;
void 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),num++;
return;
}

for(i=0; i<=a[k]; i++){
for(j=0; j < i; j++) b[M - m + j] = k+'A';
f(a,k + 1,m - i,b);  //填空位置
}
}
int main()
{
num = 0;
int  a
= {4,2,2,1,1,3};
char b[BUF];
f(a,0,M,b);
printf("%d\n",num);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: