不知道怎么做
思路是 每次考虑当前这个和前一根是否相同 假如想要相同 那就不可以用上一次是不同的那个次数
假如不同 就和上上根没有关系 只要跟上一根不同就行 就有k-1种 并且要乘以上一次(dif + same)
最后return 也要把diff same相加
public class Solution {
public int numWays(int n, int k) {
if ( n == 0 )
return 0;
if ( n == 1 )
return k;
int diff = k * ( k - 1 );
int same = k;
for ( int i = 2; i < n; i ++ ){
int temp = diff;
diff = ( diff + same ) * ( k - 1 );
same = temp;
}
return diff + same;
}
}

本文详细介绍了如何通过特定的思路和算法解决一个编程问题,包括如何在给定的函数中实现逻辑判断和计数操作,以计算满足条件的不同组合数量。此过程涉及到状态转移和递推公式的应用,最终通过迭代计算得出结果。

249

被折叠的 条评论
为什么被折叠?



