java实现10个人,生成两两交手的分组结果,不能重复案例

思路分析

  • 第1个人与后面9个人建立9次握手
  • 第2个人由于第1个人已与他建立握手,只能后面人建立8次握手
  • 得出公式(n*(n-1))/2=45

代码实现

public class Main {
    public static void main(String[] args) {
        int count=0;
        String [] s1={"A","B","C","D","E","F","G","H","I","J"};
        for (int i = 0; i <s1.length; i++) {
            for (int j =i+1; j <s1.length;j++) {
                System.out.println(s1[i]+"握"+s1[j]);
                count++;
            }
        }
        System.out.println("握手次数:"+count);
    }
}






  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python两两抽签分组是一种随机分组算法,可以将一组人员随机分成若干个小组,每个小组由个人组成。下面是一个示例代码: import xlrd,random xlsx=xlrd.open_workbook(r'D:\新桌面\python\python课件\示例.xls') #打开所用的execl工作簿xls table=xlsx.sheet_by_index(0) #打开所用信息所在的工作表sheet rows=table.nrows #提取工作表所用行数即员工总数 w=[i for i in range(nrows)] #创建从0到(总数-1)的抽奖列表 for i in range(1,1+nrows//2): #只需需要循环总数一半向下取整即可 x=random.choice(w) #随机选取一个员工x w.remove(x) #从抽奖列表中删除员工x for j in range(len(w)): #从剩余列表中遍历寻找下一个中奖人员 y=random.choice(w) #随机再选取一名员工y if table.cell_value(y,0)!=table.cell_value(x,0): #判断名员工是否是同一单位,这里运用xlrd库里的cell_value(x,y),提取第x行第y列单元格cell的信息 print('第{}次中奖人员:'.format(i),table.cell_value(x,1),table.cell_value(y, 1)) w.remove(y) #从抽奖列表中删除员工y break #满足抽取人后,结束内层循环,继续大循环 上述代码中,我们首先打开一个Excel文件,然后读取其中的信息,将所有员工的编号存入一个列表中。接着,我们使用random库中的choice函数随机选取一个员工,再从列表中删除该员工,以免重复选取。然后,我们再次使用choice函数随机选取一个员工,判断该员工是否与前一个员工来自同一单位,如果不是,则输出这个员工的信息,并从列表中删除该员工。最后,我们使用break语句结束内层循环,继续大循环。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值