趣数
如126543这样的数,6是其中最大的,在6的左边越来越大,在6的右边越来越小,并且在这个数中,1、2、3、4、5、6各出现一次,我们把这样的数叫6的趣数。
编程实现
输入数字N(3<=N<=9)
输出N的趣数,数字间用空格分开。
输入样例
4
输出样例
1243 1342 1432 2341 2431 3421
1. #include <iostream> 2. using namespace std; 3. int a[10],book[10],n; 4. bool judge() 5. { 6. int i=1; 7. if(a[i]==n||a[n]==n) return false; 8. while(a[i]<n&&a[i]<a[i+1])i++; 9. i++; 10. while(a[i]<n&&a[i]<a[i-1]&&i<=n)i++; 11. i--; 12. if(i==n) return true; 13. else return false; 14. } 15. void dfs(int step) 16. { 17. int i; 18. while(step==n+1){ 19. if(judge()){ 20. for(int i=1;i<=n;i++) 21. cout<<a[i]; 22. cout<<" "; 23. } 24. return ; 25. } 26. for(i=1;i<=n;i++){ 27. if(book[i]==0){ 28. a[step]=i; 29. book[i]=1; 30. dfs(step+1); 31. book[i]=0; 32. } 33. } 34. } 35. int main(int argc, char *argv[]) 36. { 37. cin>>n; 38. dfs(1); 39. return 0; 40. }