首页 > 其他分享 >HJ93 数组分组

HJ93 数组分组

时间:2023-04-28 11:57:03浏览次数:35  
标签:return 递归 team1 team2 team3 分组 数组 HJ93 true

修改1:

 修改2:

 修改3:(正确答案)

  修改4:优化修改3。在修改3代码实现,尽管找到了一组可行的true,但仍然会执行后面的递归。

可进行优化找到一组true后不再进行后面的递归尝试。优化实现方式是,找到一组true后,之后其他递归全部执行返回。

 1 #no=input()
 2 a=list(map(int,input().split()))
 3 team1,team2,team3=[],[],[]
 4 for i in a:
 5     if i%5==0:
 6         team1.append(i)
 7     elif i%3==0:
 8         team2.append(i)
 9     else:
10         team3.append(i)
11 def recursion(team1,team2,team3):
12     if team3==[]:#基本结束条件        
13         if sum(team1)==sum(team2):
14             return True
15         else:
16             return False
17     if recursion(team1+team3[:1],team2,team3[1:]):#第一个递归方向
18         return True
19     if recursion(team1,team2+team3[:1],team3[1:]):#第二个递归方向
20         return True
21 if recursion(team1,team2,team3):
22     tem="true"
23 else:
24     tem="false"
25 
26 print(tem)

 

标签:return,递归,team1,team2,team3,分组,数组,HJ93,true
From: https://www.cnblogs.com/tanyuanqing/p/17361715.html

相关文章

  • 1005. K 次取反后最大化的数组和
    给你一个整数数组nums和一个整数k,按以下方法修改该数组:选择某个下标i并将nums[i]替换为-nums[i]。重复这个过程恰好k次。可以多次选择同一个下标i。以这种方式修改数组后,返回数组可能的最大和。输入:nums=[4,2,3],k=1输出:5解释:选择下标1,nums变为[4,......
  • 643. 子数组最大平均数 I
    给你一个由n个元素组成的整数数组nums和一个整数k。请你找出平均数最大且长度为k的连续子数组,并输出该最大平均数。任何误差小于10-5的答案都将被视为正确答案。 示例1:输入:nums=[1,12,-5,-6,50,3],k=4输出:12.75解释:最大平均数(12-5-6+50)/4=51/4=12.7......
  • c语言中,字符数组名 与 指向字符串常量的指针之间的关系
    chara[]="hello";//定义一个字符数组a,constchar*b="hello";//定义一个指向字符的指针b,指向字符串常量的第一个字符的首地址区别:a是一个指针常量,它本身的值不能修改,即char*consta;b是一个常量指针,它所指向的值不能修改,constchar*b;......
  • 【二分查找】LeetCode 153. 寻找旋转排序数组中的最小值
    题目链接153.寻找旋转排序数组中的最小值思路首先分析一下旋转数组可能有的状态:左<中<右,此时最小值肯定在左边,应当收缩右边界左<中,中>右,此时最小值肯定在右半段,应当收缩左边界左>中,中<右,此时最小值肯定在左半段,应当收缩右边界分析这三种状态可以发现,中值小......
  • 【LeetCode动态规划#14】子序列系列题(最长递增子序列、最长连续递增序列、最长重复子
    最长递增子序列力扣题目链接(opensnewwindow)给你一个整数数组nums,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7]是数组[0,3,1,6,2,2,7]的子序列。示例1:输入:nums=[10,9,2,5,3,7......
  • 深度了解group分组查询
    使用groupby的简单例子groupby工作原理groupby+where和groupby+having的区别groupby优化思路groupby使用注意点一个生产慢SQL如何优化1.使用groupby的简单例子groupby一般用于分组统计,它表达的逻辑就是根据一定的规则,进行分组。我们先从一个简单的例子......
  • 越界访问数组进行赋值时,导致陷入死循环
    >选自《C语言陷阱与缺陷》#include<stdio.h>intmain(){  inti=0;  intarr[]={1,2,3,4,5,6,7,8,9,10};  for(i=0;i<=12;i++)  {    arr[i]=0;    printf("helloworld\n");  }  return0;}在vs、x86、C语言环境下运行这串代码......
  • 2、数组问题最常见
    1、二分查找法二分查找法(Java实现)template<typenameT>intbinarySearch1(Tarr[],intn,Ttarget){//在[l...r]的范围里寻找targetintl=0;intr=n-1;intmid;//当l==r时,区间[l...r]依然是有效的while(l<=r)......
  • 压缩数组
    443:双指针短除法:while(num>0){char[i]='0'+num%10;num/=10;}要与之后的字符串进行比较,因为之后的字符串才是没有被改动过。所以:chars[i]==cahrs[i+1]因为与之后的字符串比较,所以要从0开始。如果字符串出现不等,就将字符串记录入原字符串,再将哨兵后移;继续输入长度num如原......
  • JS 数组 group by 分组
    扩展数组方法Array.prototype.groupBy=functiongroupBy(key){  consthash={},    result=[];  for(constelofthis){    if(hash[el[key]]){      hash[el[key]].push(el);    }else{      r......