我想对以下元素进行循环:
[1,2,11,12,21,22,111,112,121,122,...,222222]
或者例如
[1,2,3,11,12,13,21,22,23,31,32,33,111,112,113,... 333333333]
我怎样才能用Java制作它?在我的特定情况下,我使用4位数字(1,2,3,4),最后一个数字的长度可以是1到10.
我设法用Python和PHP做到了.在第一种情况下,我使用列表列表.我从[[1],[2],]开始,然后对于列表中的每个元素,我添加了1和2,所以我得到了[[1,1],[1,2],[2,1],[2] ,2]]等等:
nchips = sum(chips)
traj = [[]]
last = [[]]
while len(last[0]) < nchips:
newlast = []
for tr in last:
for d in [1,2,3,4]:
newlast.append(tr + [d])
last = newlast
traj += last
Run Code Online (Sandbox Code Playgroud)
当我在PHP中使用它时,我使用了基数为3的数字.但这是一个棘手且不优雅的解决方案.
for ($i=-1; $i<=$n; $i+=1) {
if ($i>-1) {
$n5 = base_convert($i,10,5);
$n5_str = strval($n5);
$tr = array();
$found = 0;
for ($j=0; $j<strlen($n5_str); $j+=1) {
$k = $n5_str[$j];
if ($k==0) {
$found = 1;
break;
}
array_push($tr,$k);
} …Run Code Online (Sandbox Code Playgroud) 我试图在{"A","B","C"}不重复的情况下查找数组中的字符串组合,并且应该在子集中保留元素的顺序。所需的顺序是[["B","C"], ["A","C"], ["A","B"], ["A","B","C"], ["A"], ["C"], ["B"]]。我尝试使用在这个问题中找到的答案来编写逻辑,发现元素的顺序没有保留。
public static Set <JSONArray> getCombinations( int k , JSONArray properties )
{
Set <JSONArray> combinations = new LinkedHashSet <JSONArray>();
try
{
if ( k == 0 )
{
combinations.add( new JSONArray() );
return combinations;
}
for ( int i = 0 ; i < properties.length() ; i++ )
{
String element = properties.getString( i );
JSONArray sublist = getSublist( properties , i + 1 );
combinations.add( sublist …Run Code Online (Sandbox Code Playgroud) 我正在尝试在Array上创建扩展,我可以在不生成重复组的情况下获得数组的所有可能组合,包括无项目组合。
例如,对于此数组:
[1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)
应生成以下可能的组合:
[[], [1], [2], [3], [4], [1, 2], [1, 3], [1, 4], [2, 3], [2, 4], [3, 4], [1, 2, 3], [1, 2, 4], [1, 3, 4], [2, 3, 4], [1, 2, 3, 4]]
Run Code Online (Sandbox Code Playgroud)
请注意,没有一个组重复自己,即:如果有一个组[1,2],则没有其他组:[2,1]。
这是我能得到的最接近的结果:
public extension Array {
func allPossibleCombinations() -> [[Element]] {
var output: [[Element]] = [[]]
for groupSize in 1...self.count {
for (index1, item1) in self.enumerated() {
var group = [item1]
for (index2, item2) in self.enumerated() {
if group.count < …Run Code Online (Sandbox Code Playgroud) 一个hwk问题,显然也是一个常见的面试问题,我遇到了麻烦:
" 编写一个算法(伪代码),打印出一组n个元素中三个元素的所有子集. 这个元素的元素存储在一个列表中,该列表是算法的输入."
因此,例如,如果S = {1,2,3,4},算法将打印出这四种组合:
123 124 134 234
谁能提出他们的想法/解决方案?
我正在研究一个问题,我给了一个数字,需要找到该数字中数字的每个可能的排列.例如,如果给我20,答案是:20和02.我知道有n!可能存在排列,我将数字分开,以便每个数字都是数组中的元素.我的问题是:我如何遍历此数组以生成至少2位数但不超过6的数字的每种可能组合.
我有一个带有一些值的列表,比方说1 2 3 4 5 6
我需要像这样配对:12 13 14 15 16 23 24 25 26 34 35 36 45 46 56
基本上,我需要将它们全部混合以创建独特的值集.
您对如何创建这样的新列表有什么想法吗?
谢谢您的意见!
我正在编写一个算法来生成这种数组的所有可能的排列:
n =长度
k =数组中1的数量
所以这意味着如果我们有k 1,我们将在数组中得到nk 0.
例如:n = 5; k = 3;
所以很明显这个数组有5种可能的排列,因为
n!/(k!(nk)!
5!/(3!2!)=(5*4)/ 2 = 10个
可能的数组值
以下是所有值:
11100
11010
11001
10110
10101
10011
01110
01101
01011
00111
我猜我应该使用递归算法,但我只是没有看到它.我正在用C++编写这个算法.
任何帮助,将不胜感激!
什么是计算n个可能元素的所有可能长度-r组合的最快方法,而不采用强力技术或任何需要STL的东西?
在我的数据结构类中为我的最终项目开发Apriori算法时,我开发了一个使用位移和递归的有趣解决方案,我将在下面的回答中分享对任何感兴趣的人.但是,这是实现这一目标的最快方法(不使用任何通用库)吗?
我出于好奇而不是其他任何问题,因为我目前的算法对我的目的来说效果很好.