题目描述:就是给你很多符号,把他们的所有组合都输出来代码如下,可以参考我的上一篇组合数
#include<stdio.h>
int count,deep;
char a[6]={' ','+','-','*','/'};
char goal[21];
void dfs(char m,int count)
{
int j,i;
goal[count]=m;
if(count==deep)
{
for(i=1;i<=deep;i++) //达到深度后就输出结果,本层命名为输出层
{
printf("%c",goal[i]);
}
printf("\n");
return ; //跳回到上一层,是指输出层的上一层
}
count++;
for(j=4;j>=1;j--)
{
dfs(a[5-j],count); //不到深度时都从a[1]开始进数组,直到a[4]也进了数组后就调回到上次的循环,既要从上次的a[2]开始了(a[1]已经被循环过一次了,此时的count是上次的count ,就是比这次少一个,每次都少一个,那么count会逐渐“减少“,但是每次小的循环又会是count增大,那么count就呈波浪线起伏,不懂得自己测试一下)
}
}
int main()
{
int times,m,i;
scanf("%d",×);
while(times--)
{
scanf("%d",&deep);
for(i=1;i<=4;i++)
dfs(a[i],1);
}
}