用回溯法求1~n个数组成的集合
这道题是自己写着玩的,看看能不能掌握简单的回溯,是挑战编程上的一个小程序自己打下来的。留个纪念。还有一个回溯是一个牛喝水的那一道。
八皇后就不多少了,我想基本提到回溯法的树上都会提及八皇后和它的代码。
View Code
#include <stdio.h> #include <stdlib.h> int leap = 0; void process(int a[],int k) { printf("{"); int i; for(i = 1;i <= k;i++) if(a[i]) printf(" %d",i); printf("}"); puts(""); } void backtrack(int a[],int k,int n) { int c[2]; c[0] = 1; c[1] = 0; int i; if(k == n) process(a,k); else { k =k+1; for(i = 0;i< 2;i++) { a[k] = c[i]; backtrack(a,k,n); if(leap) return; } } } int main() { int a[1010],n,i; while(~scanf("%d",&n)) { backtrack(a,0,n); //backtrack(a,1,n); } return 0; }