![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif) /**//*
给出一个n,要输出类似图案
用dfs写
*/
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<queue>
using namespace std;
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
int n;
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
void print(int num)
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif) ![](http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif) {
for(int i = 1; i <= num ; i++)
putchar('\t');
}
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
void print(int num, int pos , char A[])//当前要检查pos位置,前置num个'\t'
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif) ![](http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif) {
if(pos == n)
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
print(num);
printf("printf(\"");
for(int i = 0 ; i < n ; i++)
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
if(i)putchar('<');
printf("%c" , A[i]);
}
puts("\\n\");");
return;
}
for(int i = pos; i > 0 ; i-- , num++ )//类似插入排序,一个一个检查过去
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
print(num);
printf("if (%c<%c)\n",A[i-1],A[i]);
char _A[10];
for(int j = 0 ; j < n; j++)
_A[j] = A[j];
print(num+1 , pos+1 ,_A);
print(num);
puts("else");
swap(A[i-1] , A[i]);
}
print(num,pos+1,A);
}
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
int main()
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif) ![](http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif) {
//freopen("out","w",stdout);
while(scanf("%d",&n),n)
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
puts("#include <stdio.h>\n");
printf("int ");
for(int i = 0 ; i < n ; i++)
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
if(i)putchar(',');
putchar('a'+i);
}
puts(";\nbool ok;\n\nint main()\n{");
printf("\tprintf(\"Please enter %d different integers:\\n\");\n",n);
puts("\tdo\n\t{");
printf("\t\tscanf(\"");
for(int i = 0 ; i< n ;i++)
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
printf("%%d");
}
printf("\"");
for(int i = 0 ; i< n ;i++)
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
printf(",&%c",'a'+i);
}
puts(");");
printf("\t\tok=1;\n\t\tif (");
for(int i = 0; i < n-1 ;i ++)
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
for(int j = i+1; j < n; j++)
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
printf("%c==%c",'a'+i,'a'+j);
if(i!=n-2 || j!=n-1)printf(" || ");
}
}
puts(")\n\t\t\tok=0;\n\t}while (ok);");
char A[10];
for(int i = 0 ; i < n ; i++)
A[i] = 'a'+i;
print(1,0,A);
puts("\treturn 0;\n}\n");
}
return 0;
}
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
|
|
常用链接
随笔分类
Links
搜索
最新评论
![](/images/xml.gif)
|
|