• LQ0170 抽签【组合】


    题目描述
    本题为代码补全填空题,请将题目中给出的源代码补全,并复制到右侧代码框中,选择对应的编译语言(C/Java)后进行提交。若题目中给出的源代码语言不唯一,则只需选择其一进行补全提交即可。复制后需将源代码中填空部分的下划线删掉,填上你的答案。提交后若未能通过,除考虑填空部分出错外,还需注意是否因在复制后有改动非填空部分产生错误。

    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行)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    下面的代码就是为了这个目的的,请仔细阅读源码,并填写划线部分缺少的代码。

    源代码
    C

    #include 
    #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\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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    Java

    import java.util.*;
    public class Main
    {
        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,"");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    问题分析
    填空题。
    C语言程序填入“f(a, k+1, m-i, b)”
    Java语言程序填入“f(a,k+1,n-i,s2)”

    AC的C语言程序如下:

    #include 
    #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\n",b);
            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()
    {    
        int  a[N] = {4,2,2,1,1,3};
        char b[BUF];
        f(a,0,M,b);
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    AC的Java语言程序如下:

    import java.util.*;
    public class Main
    {
        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++){
                f(a,k+1,n-i,s2);
                s2 += (char)(k+'A');
            }
        }
        
        public static void main(String[] args)
        {
            int[] a = {4,2,2,1,1,3};
            
            f(a,0,5,"");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
  • 相关阅读:
    Spring Cloud 之 Feign 简介及简单DEMO的搭建
    (Hexagon_V65_Programmers_Reference_Manual(13)
    es5 es6 新增
    无服务器开发实例|微服务向无服务器架构演进的探索
    基于LSTM的分子生成入门
    《算法竞赛·快冲300题》每日一题:“取石子游戏”
    符润展--基于5G-V2X的车路协同方案研究
    【MQTT】Javascript通过WebSocket连接MQTT
    【论文解读】CP-SLAM: Collaborative Neural Point-based SLAM System_神经点云协同SLAM系统(上)
    Android 音频可视化
  • 原文地址:https://blog.csdn.net/tigerisland45/article/details/127798412