求个随机整数的 算法

从1到100的整数中随机10个,然后和为100的组合有哪些?

忽然笑
浏览 597回答 2
2回答

一只甜甜圈

如果是100个数里求10个和为100的数的组合,组合情况比较多,暴力不可取。def&nbsp;get_combs(n=100,&nbsp;k=10,&nbsp;tg=100): &nbsp;&nbsp;&nbsp;&nbsp;combs&nbsp;=&nbsp;[] &nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;=&nbsp;tg&nbsp;-&nbsp;sum(range(1,&nbsp;k))&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;dfs(comb,&nbsp;idx=0,&nbsp;k=k,&nbsp;t=tg): &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dmx&nbsp;=&nbsp;min(tg&nbsp;-&nbsp;sum(comb),&nbsp;x,&nbsp;n) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arr&nbsp;=&nbsp;range(1,&nbsp;dmx&nbsp;+&nbsp;1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;t&nbsp;==&nbsp;0&nbsp;and&nbsp;k&nbsp;==&nbsp;0: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;combs.append(comb[:])&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;dmx&nbsp;<=&nbsp;idx&nbsp;or&nbsp;k&nbsp;<&nbsp;0&nbsp;or&nbsp;t&nbsp;<&nbsp;0:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;i&nbsp;in&nbsp;range(idx,&nbsp;dmx): &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v&nbsp;=&nbsp;arr[i] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dfs(comb&nbsp;+&nbsp;[v],&nbsp;i&nbsp;+&nbsp;1,&nbsp;k&nbsp;-&nbsp;1,&nbsp;t&nbsp;-&nbsp;v) &nbsp;&nbsp;&nbsp;&nbsp;dfs([])&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;combs
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python