题目描述
找到第一个比n大且满足4与7个数相等的数
算法1(y总代码)
dfs
C++ 代码
#include <bits/stdc++.h>
using namespace std;
string s,ans;
void dfs(string str,int u,int s4,int s7)
{
if(u==s.size())
{
if(str>=s&&(ans.empty()||ans>str))//str>=s表示找到比s大的数
{
ans=str;//更新答案
return;//结束
}
}
if(s4<s.size()/2) dfs(str+'4',u+1,s4+1,s7);
if(s7<s.size()/2) dfs(str+'7',u+1,s4,s7+1);
}
int main()
{
cin>>s;
if(s.size()%2)//如果输入字符串只有奇数个位
{
s='0'+s;
}
dfs("",0,0,0);//从空字符串开始填入数字
if(ans.empty())//需要特判下答案不存在情况
{
s="00"+s;
dfs("",0,0,0);
}
cout<<ans<<endl;
}