今有七对数字:两个1,两个2,两个3,…两个7,把它们排成一排。
要求,两个1之间有1个数字,两个2之间有两个数字,以此类推,两个7之间有7个数字。以下就是一个符合要求的排列:
17126425374635
当然,如果把它倒过来也是符合要求的。
请你找出另一种符合要求的排列法,并且以74 开头。
注意,只填写这个14位的整数,不能填写任何多余的内容,比如说明注释等
#include <stdio.h> #include <stdlib.h> int vis[8]; void DFS(int ans[],int step) { int i; if(step==14) { for(i=0;i<14;i++) printf("%d",ans[i]); return; } if(ans[step]!=0) //后面的数还需要dfs DFS(ans,step+1); for(i=1;i<=7;i++) { if(!vis[i] && !ans[step+i+1] && !ans[step]) //return回来需要第三个条件否则出错 { vis[i]=1; ans[step]=i; ans[step+i+1]=i; DFS(ans,step+1); vis[i]=0; ans[step]=0; ans[step+i+1]=0; } } } int main() { int ans[14]={0}; ans[0]=7; ans[1]=4; ans[8]=7; ans[6]=4; vis[7]=1; vis[4]=1; DFS(ans,2); }