问题很简单。有一套{2,4,6}。预期答案是获得数字6的所有可能的排列。因此,答案将是: -
{2,2,2},{2,4},{4,2},{6}
我尝试了什么: -
我正在尝试使用流行的“硬币改变”问题来解决这个问题。但在硬币变化中,排列不存在。方式{2,4}和{4,2}被认为是相同的。这是我的代码。它不考虑排列。
public static int NumberOfWays(int sum)
{
int [][] memMatrix = new int [7][sum+1];
for (int i = 2 ; i <= 6 ; i += 2)
{
for (int j = 0 ; j <= sum ; j += 2)
{
if (i == 2)
{
//using only 2 , there is only 1 way to get the sum
memMatrix[i][j] = 1;
}
else if ( i > j)
{
//if total sum is less than the newly used denomination , then the number of ways will always remain same
memMatrix[i][j] = memMatrix[i - 2][j];
}
else
{
//if this is the case then need to calculate without using the denomination + using the denomination
memMatrix[i][j] = memMatrix[i - 2][j] + memMatrix[i][j - i];
}
}
}
for (int i = 2 ; i <= 6 ; i += 2)
{
for (int j = 2 ; j <= sum ; j += 2)
{
System.out.print(memMatrix[i][j]+" ");
}
System.out.print("\n");
}
return memMatrix[6][sum];
}
这是我与矩阵相关的输出。我如何计算排列?
1 1 1
1 2 2
1 2 3
The number of ways to get 6 = 3
答案 0 :(得分:0)
我得到了解决方案。这很简单。代码被评论。它可能需要一点跟踪。
FILETYPE:FILEPATH