您的位置:首页 > 其它

今天写dfs时发现到一个需要注意的问题

2010-09-16 20:34 309 查看
  今天数据结构实验课,老师给了一道题,说100分能用多少个1分,2分,5分组成,列出所有可能

原本3个for就可以强搜索完, 最近由于搜索题做多了,上来直接想到用dfs做,后来写好了发现问题了

dfs用于储存数据的数组,大小至少要把所有数据都能存进去,这题大小为100+50+20,但是仔细想会发现,答案最多不过为100个,开始我就把数组设为100个,运行起来爆了,调试,发现数组越界,就发现这个原因了,

还有一个办法,在dfs再次操作时,判断len是否超了100,小于100继续,否则不继续,这样递归次数少了,这种方法更好,更快捷

以后要注意这个问题

代码

#include<iostream>
using namespace std;

int main()
{
int count = 0;
for (int i = 0; i <= 20; i++)
{
for (int j = 0; j <= 50; j++)
for (int k = 0; k <= 100; k++)
{
if (i*5 + j*2 + k*1 == 100)
{
printf("%d*5 + %d*2 + %d*1 = 100\n", i, j, k);
count++;
}
}
}
cout << count;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: