比赛 20160708BDFS 评测结果 AAAAWWWAWW
题目名称 跳棋的挑战 最终得分 50
用户昵称 W 运行时间 1.834 s
代码语言 C++ 内存使用 0.29 MiB
提交时间 2016-07-08 09:58:35
显示代码纯文本
    #include<cstdio>  
    using namespace std;  
    int ans[20]={-1};  
    bool vis[20];  
    bool add[20],sub[50];  
    int n,cnt,num;  
    void dfs(int x){  
        if(x==n+1){  
            num++;  
            if(num<=3){  
               for(int i=1;i<n;i++)  printf("%d ",ans[i]);  
               printf("%d\n",ans[n]);  
            } 
        }
        for(int i=1;i<=n;i++){
        	/*if(ans[x-1]!=i-1&&ans[x-1]!=i&&ans[x-1]!=i+1){
        		ans[x]=i;
        		dfs(x+1);
        		ans[x]=-1;
        	}*/
            if(!vis[i]&&!add[x+i]&&!sub[i-x]){  
              ans[x]=i;vis[i]=true;add[x+i]=true;sub[i-x]=true;  
              dfs(x+1);  
              vis[i]=false;add[x+i]=false;sub[i-x]=false;  
            }
        }  
    }  
    int main(){  
        freopen("checker.in","r",stdin);  
        freopen("checker.out","w",stdout);  
        scanf("%d",&n);  
        dfs(1);  
        printf("%d\n",num);  
        return 0;  
      
    }