zoukankan      html  css  js  c++  java
  • 2016蓝桥杯决赛C/C++A组第三题 打靶

    题意:

    小明参加X星球的打靶比赛。
    比赛使用电子感应计分系统。其中有一局,小明得了96分。

    这局小明共打了6发子弹,没有脱靶。
    但望远镜看过去,只有3个弹孔。
    显然,有些子弹准确地穿过了前边的弹孔。

    不同环数得分是这样设置的:
    1,2,3,5,10,20,25,50

    那么小明的6发子弹得分都是多少呢?有哪些可能情况呢?

    分析:

    #include <stdio.h>
    #define N 8
    
    void 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("
    ");
    		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;
    }
    

      

  • 相关阅读:
    Python的文本数据
    Python
    正则表达式
    多数据库的链接
    工作感受月记 201902月
    女儿的出生
    工作感受月记 201901月
    工作感受月记 201812月
    工作感受月记 201811月
    工作感受月记 201809
  • 原文地址:https://www.cnblogs.com/tyty-Somnuspoppy/p/6866128.html
Copyright © 2011-2022 走看看