1426 Find The Multiple解题报告(深度优先搜索、广度优先搜索)
题目来源:POJ 1426 Find The Multiple
http://acm.pku.edu.cn/JudgeOnline/problem?id=1426
解法类型:深度优先搜索
作者:刘亚宁
题目大意:
找出任意一个n(n<=100)的倍数中只由01构成的十进制数。
解题思路:
以一个1为根节点,每个节点接有0和1构建一棵树,应用深度优先搜索,得到符合题意的解。
提交情况:
1、Compile Error一次:编译器选择问题,选择G++编译器后此问题解决。
2、Memory Limit Exceeded两次:应用广度优先搜索,利用string记录数字过多超内存限制。
3、Runtime Error一次:应用广度优先搜索,缩小数组后数组越界。
注意:
以下附三段代码,前两段是深度优先搜索,其中第二段更直接、省时。第三段是广度优先搜索,比较简单,利用了题目的特殊性。
源程序1:
#include <iostream>
using namespace std;
int n, t, a[100], ac,l;
void dfs(int c, int s)
{
if(s==0)//如果余数为0,择停止递归
{
ac = 1;//表示已经找到结果
l=c;//给数组的长度赋值
}
else if(c < 100)//在深度100范围内进行递归
{
if(ac==0)//还没找到结果,进行递归运算
{
a[c] = 1;//尝试下一位放1
dfs(c + 1, (s * 10 + 1) % n);
}
if(ac==0)
{
a[c] = 0;
dfs(c + 1, (s * 10) % n);
}
}
}
int main()
{
while(cin>>n,n)
{
a[0] = 1, ac = 0;//初始化
dfs(1, 1);
for(int i=0;i<l;i++) cout<<a[i];//根据递归得到的结果,进行输出
cout<<endl;
}
return 0;
}
源程序2:
#include <iostream>
using namespace std;
int n, t, a[100], ac;
void dfs(int c, int s)
{
if(s==0&&ac==0)
{//得到结果,直接输出
for(int i=0;i<c;i++) cout<<a[i];
cout<<endl;
ac = 1;//修改状态为已得到结果
}
else if(c < 100&&ac==0)//未得到结果且深度为100以下的前提下进行递归
{
a[c] = 1;
dfs(c + 1, (s * 10 + 1) % n);
a[c] = 0;
dfs(c + 1, (s * 10) % n);
}
}
int main()
{
while(cin>>n,n)
{
a[0] = 1, ac = 0;
dfs(1, 1);
}
return 0;
}
源程序3:
#include <iostream>
#include <cstdlib>
using namespace std;
long long m[2000000];//题目的特殊性,用long long就可以过。
int main()
{
int n,now,tail;
while(cin>>n,n)
{
now=0;
tail=1;
m[0]=1;
while(1)
{
if(m[now]%n==0)
{
cout<<m[now]<<endl;
break;
}
m[tail++]=m[now]*10+1;
m[tail++]=m[now]*10;
now++;
}
}
return 0;
}
posted on 2010-03-05 10:15 liugoodness 阅读(632) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述