implement intPartitions method

This commit is contained in:
2026-04-23 04:13:00 +03:30
parent b8b9b6f482
commit c287af8aae
+48 -2
View File
@@ -146,10 +146,56 @@ public class MainExercises
*/
public int[][] intPartitions(int n) {
// todo
return null;
ArrayList<int[]> result = new ArrayList<>();
int[] currentPartition = new int[n];
int k=0; //اخرین ایندکس currentPartition
currentPartition[k] = n;
while (true) {
int[] temp = new int[k+1];
for(int i=0 ; i<=k ; i++) {
temp[i] = currentPartition[i];
}
result.add(temp);
int remained = 0;
while(k>=0 && currentPartition[k]==1) {
remained += currentPartition[k];
k--;
}
if(k<0)
break;
currentPartition[k]--;
remained++;
while (remained > currentPartition[k]) {
currentPartition[k+1] = currentPartition[k];
remained -= currentPartition[k];
k++;
}
currentPartition[k+1] = remained;
k++;
}
int[][] output = new int[result.size()][];
for(int i=0 ; i<result.size() ; i++) {
output[i] = result.get(i);
}
return output;
}
public static void main()
{