算法9-组成最多场次比赛问题
题目:
给定一个int数组,代表每个选手的能力值,给定一个整数n,当两个选手能力值相差你的时候,可以组成异常比赛,求最多能组成机场比赛
分析:
动态规划,贪心
package main
import("fmt"
)//[1,1,2,3,3,4,5,7]
func maxrace(list []int,n int){fmt.Println(list)// tmp:=""right:=0count:=0for k,_:=range(list){right=k+1 //把配到对的元素直接标称-999,当遇到-999的时候说明这个index的元素已经配过对了 , 或者k等于最后一个元素的时候跳出,/直接下一个if list[k]==-999 || k>=len(list)-1 {continue}//从k开始,往右遍历,直到遇到差为k的元素停止for right<len(list)-1 && (list[right]-list[k]!=2 || list[k]-list[right]!=-2) {right+=1}//跳出for循坏有两种结果,1找到合适的搭配,2没有找到,所以这里判断是结果1还是结果2,找到将这个元素标为-999if (list[right]-list[k]==2 || list[k]-list[right]==-2){list[right]=-999count+=1}}fmt.Println(list)fmt.Printf("最多能组成 %v 场比赛" ,count)
}
func main(){list:=[]int{1,1,2,3,3,4,5,7,9,9,11,11}maxrace(list,2)
}
我这里标记元素用没用过是把它标成一个数组里不可能出现的数 比如-999
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
