5.抽签

抽签

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

解析

C++题解

 #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\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;
 }

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

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

思路:显然第18行我们要调用f函数,首先肯定是(a, , , b),两个数组嘛,然后第10行kN,说明k是填到第k个,那么就变成了(a, k+1, , b),第12行判断m0,说明这第三个参数可能输m-1,但测试一下发现并不是,那就只能是m-i了,测试发现正确。

答案:

f(a, k+1, m-i, b)

Java题解

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,"");
    }
}

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

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

答案:f(a, k+1, n-i, s2),
PyQt5可以用来实现一个抽签器。根据提供的引用内容,可以看出抽签器的实现主要包括以下几个功能: 1. 显示抽签结果:使用QtWidgets.QMessageBox.information弹窗来展示结果。在结束所有抽签之后,通过弹窗信息来展示结果。具体的代码可以参考引用\[1\]中的示例。 2. 控制滚动显示信号:使用一个独立的线程来发送滚动显示信号,去修改主线程的UI。具体的代码可以参考引用\[2\]中的示例。 3. 停止抽签:当开始按键没有被按下时,按下“结束”按键应该无效。在人数大于等于1时,按下“结束”按键,需要在当前人物列表和顺位列表中仍有的选项中,随机选出一个,并将这个选项从当前的顺位和人物列表中移除,以避免同一个人或同一个顺位再次被选中。具体的代码可以参考引用\[3\]中的示例。 综上所述,可以使用PyQt5来实现一个抽签器,其中包括显示抽签结果、控制滚动显示信号和停止抽签等功能。具体的实现可以参考以上提供的引用内容中的示例代码。 #### 引用[.reference_title] - *1* *2* *3* [随机抽签工具——PyQt5实现](https://blog.csdn.net/panfengzjz/article/details/120389395)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值