首页 > 代码库 > 2016蓝桥杯决赛C/C++A组第三题 打靶
2016蓝桥杯决赛C/C++A组第三题 打靶
题意:
小明参加X星球的打靶比赛。
比赛使用电子感应计分系统。其中有一局,小明得了96分。
这局小明共打了6发子弹,没有脱靶。
但望远镜看过去,只有3个弹孔。
显然,有些子弹准确地穿过了前边的弹孔。
不同环数得分是这样设置的:
1,2,3,5,10,20,25,50
那么小明的6发子弹得分都是多少呢?有哪些可能情况呢?
分析:
#include <stdio.h>#define N 8void f(int ta[], int da[], int k, int ho, int bu, int sc){//ta[i]--环数i得分,da[i]--打中环数i的子弹数,k--环数id,ho--弹孔数,bu--子弹个数,sc--得分 int i,j; if(ho<0 || bu<0 || sc<0) return; if(k==N){ if(ho>0 || bu>0 || sc>0) return; for(i=0; i<N; i++){ for(j=0; j<da[i]; j++) printf("%d ", ta[i]); } printf("\n"); return; } for(i=0; i<=bu; i++){//枚举环数k上可能打中的子弹个数,若打中个数为0,则不造成弹孔 da[k] = i; f(ta, da, k+1,(i == 0) ? ho : ho - 1 , bu-i, sc-ta[k]*i); //填空位置 } da[k] = 0;}int main(){ int ta[] = {1,2,3,5,10,20,25,50}; int da[N]; f(ta, da, 0, 3, 6, 96); return 0;}
2016蓝桥杯决赛C/C++A组第三题 打靶
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。