第一次写DFS的程序,虽然是个水题。
1. 学了memset
2. 可以存下来A-Z的各个次方的结果
3. 可以排序优化
4. 我用了t[0]==0来判断是否有解,也可设个flag
5. 用了递归,也可用五层循环

#include <iostream>
#include <cstring> using namespace std; int n;
int len;
char s[15];
int vis[15];
int t[5];
int p[5]; void check()
{
for (int i = 0; i < 5; i++)
{
if (p[i] > t[i])
{
for (int j = 0; j < 5; j++)
{
t[j] = p[j];
}
break;
}
if (p[i] < t[i])
{
break;
}
}
} void dfs(int cur)
{
if (cur == 5)
{
if (n == p[0] - p[1] * p[1] + p[2] * p[2] * p[2] - p[3] * p[3] * p[3] * p[3] + p[4] * p[4] * p[4] * p[4] * p[4] )
{
check();
}
}
else
{
for (int i = 0; i < len; i++)
{
if (!vis[i])
{
vis[i] = 1;
p[cur] = s[i] - 'A' + 1;
dfs(cur + 1);
vis[i] = 0;
}
}
}
} int main()
{
while (true)
{
cin >> n >> s;
if (n == 0)
{
return 0;
}
len = strlen(s);
memset(vis, 0, sizeof(vis));
memset(t, 0, sizeof(t));
memset(p, 0, sizeof(p));
dfs(0);
if (t[0] == 0)
{
cout << "no solution" << endl;
}
else
{
for (int i = 0; i < 5; i++)
{
cout << (char) (t[i] + 'A' - 1);
}
cout << endl;
}
}
return 0;
}

  

最新文章

  1. Win Form程序线程点点
  2. 【iCore3 双核心板】例程二:读取arm按键状态
  3. asp.net mvc 如何调用微信jssdk接口:分享到微信朋友(圈)| 分享到qq空间
  4. [转]Visual Studio 2010 单元测试目录
  5. linux apache 自动监护脚本
  6. photoshop:找不到增效工具入口点
  7. 【STL学习】智能指针之shared_ptr
  8. Centos4.3安装MySQL-python-1.2.3,出现error: command &#39;gcc&#39; failed with exit status 1
  9. Python 基础-python-列表-元组-字典-集合
  10. auto 和 decltype (C++11 新增)
  11. 微软Skype Linux客户端全新发布
  12. python3学习笔记12(变量作用域)
  13. PropTypes使用
  14. C#获取文件夹及文件的大小与占用空间的方法
  15. mysql的骚操作:自增长的字段同时插入到另一个字段
  16. 【linux】——一个小程序
  17. (Dos)/BAT命令入门与高级技巧详解(转)
  18. CF530D sum in the tree
  19. .net中delegate的使用
  20. sql语言的一大类 DML 数据的操纵语言

热门文章

  1. DTCMS列表页自定义参数。
  2. 例题6-3 Matrix Chain Multiplication ,Uva 442
  3. Z-BlogPHP 安装出现 (8) Undefined offset: 6 解决方法
  4. 使用VideoView播放、暂停、快进视频
  5. 【转】RunTime.getRunTime().addShutdownHook用法
  6. [ios]scrollView实现移动与缩放
  7. cocos2dx中的假动作,又称动作回调函数
  8. java 词法分析器
  9. oc对象的内存管理
  10. DevExpress GridControl使用(转)