• 抽签


    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 1024
    
    void f(int a[], int k, int m, char b[])
    {
             int i,j;
    
             if(k==N){
                       b[M] = 0;
                       if(m==0) printf("%s
    ",b);
                       return;
             }
    
             for(i=0; i<=a[k]; i++){
                       for(j=0; j<i; j++) b[M-m+j] = k+'A';
                      (13分);  //填空位置
             }
    }
    int main()
    {       
             int  a[N] = {4,2,2,1,1,3};
             char b[BUF];
             f(a,0,M,b);
             return 0;
    }
    

    仔细阅读代码,填写划线部分缺少的内容。

    注意:不要填写任何已有内容或说明性文字。

    看函数f以及题目给的输出结果,能猜到是深搜,一定是递归执行f函数,那么确定参数需要考虑一下参数1和4不用说照搬,参数2是说当前把k组的人编进队伍,那么下次就是k+1组的,参数3是m,M-m+j位置开始放人,m越大,位置越靠前,而且最后m变为0,就输出,所以m是要减小的,这个时候再看一下代码,其实就是放了i个k组的人进队伍,所以就是m - i,表示还有几个位置。

    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行)
    
    public class A
    {
    	public static void f(int[] a, int k, int n, String s)
    	{
    		if(k==a.length){ 
    			if(n==0) System.out.println(s);
    			return;
    		}
    		
    		String s2 = s;
    		for(int i=0; i<=a[k]; i++){
    			_____________;   //填空位置
    			s2 += (char)(k+'A');
    		}
    	}
    	
    	public static void main(String[] args)
    	{
    		int[] a = {4,2,2,1,1,3};
    		
    		f(a,0,5,"");
    	}
    }
    
    

    仔细阅读代码,填写划线部分缺少的内容。

    注意:不要填写任何已有内容或说明性文字。

    JAVA组 答案5 (13分)

  • 相关阅读:
    二分查找
    【递归】N位全排列
    深度学习训练平台Polyaxon食谱 | Polyaxon使用笔记
    PAT A1149 Dangerous Goods Packaging [蜜汁模拟+STL]
    PAT A1124 Raffle for Weibo Followers [模拟+STL]
    PAT A1144 The Missing Number [模拟+STL]
    PAT A1120 Friend Numbers [模拟]
    PAT A1100 Mars Numbers [字符串处理+硬核模拟]
    PAT A1095 Cars on Campus [排序+硬核模拟]
    PAT A1113 Integer Set Partition [模拟]
  • 原文地址:https://www.cnblogs.com/8023spz/p/10440349.html
Copyright © 2020-2023  润新知