辣椒不要辣


私信TA

用户名:inn12138

访问量:7301

签 名:

等  级
排  名 3191
经  验 2002
参赛次数 0
文章发表 13
年  龄 0
在职情况 学生
学  校 广西师范大学
专  业

  自我简介:

解题思路:
                很明显这道题需要生成1-9的全排列,从中判断符合条件的结果,使用深度搜索算法就可以解决了。
注意事项:

                输出的三个数中间没有逗号,是空格。

参考代码:
#include <stdio.h>
#include <string.h>
int a[10];
int vis[10];
void dfs(int step)
{
 int b,c,d,i;
 if(step == 9)//如果已经搜到底了
 {
  b = a[0]*100+a[1]*10+a[2];//第一个三位数
  c = a[3]*100+a[4]*10+a[5];//第二个三位数
  d = a[6]*100+a[7]*10+a[8];//第三个三位数
  if(c == 2*b && d == 3*b)//满足1:2:3的比例
  {
   printf("%d %d %d\n",b,c,d);
  }
  return;
 }
 for(i = 1; i <= 9; i++)
 {
  if(!vis[i])//如果没有访问到该节点
  {
   vis[i] = 1;//标记已经访问
   a[step] = i;
   dfs(step+1);//搜索下一层
   vis[i] = 0;//释放该节点,回到原来的状态
   }
 }
}
int main()
{
 memset(a,0,sizeof(a));
 memset(vis,0,sizeof(vis));
 dfs(0);
 return 0;
 }

 

0.0分

2 人评分

  评论区

  • «
  • »