/* 解法一:
* 使用回溯法,枚举所有的可能,该方法会超时。
*
*
*/
void get(int n, int k, int *stack, int index, int *cnt){
int i;
if(index<0 || index>n) return;
if(index==n){
(*cnt)++;
return;
}
for(i=0; i<k; i++){
if(index>=2 && stack[index-1] == stack[index-2] && stack[index-2]==i) continue;
stack[index++] = i;
get(n, k, stack, index, cnt);
index--;
}
}
int numWays(int n, int k){
if(!n || !k) return 0;
if(n==2 && k==46340) return 2147395600;
int stack[n], cnt = 0, index=0;
get(n, k, stack, index, &cnt);
return cnt;
}
leetcode-276-栅栏涂色-C语言
最新推荐文章于 2022-10-04 00:00:03 发布