Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <stdio.h>const int maxn=9;int n;char ans[2*maxn];bool flag[maxn];int rest;int interrupt;void dfs(int nowpos){if(!rest){ans[nowpos]='\0';//手动结尾,很重要puts(ans);return;}if(nowpos&&ans[nowpos-1]!='-'){//不是第一个空并且前面不是'-'ans[nowpos]='-';//修改标志int temp=interrupt;interrupt=0;dfs(nowpos+1);//回溯标志interrupt=temp;}for(int i=interrupt+1;i<=n;i++){if(flag[i]){ans[nowpos]='0'+i;//修改标志flag[i]=false;rest-=1;int temp=interrupt;