解题思路:一号操作,二号操作都实行通过搜索找到最大值,但是二号操作变不到9就不要用了
注意事项:
参考代码:
n,a,b=map(int,input().split())
n=list(str(n))
s=[]
def dfs(a,b,n,i):
global s
if i==len(n):
s.append(int(''.join(n)))
return
else:
cnt1=9-int(n[i])
cnt2=1+int(n[i])
if(a>=cnt1):
x=n[i]
n[i]='9'
dfs(a-cnt1,b,n,i+1)
n[i]=x#要记得回溯
else:#进不到9时
x=n[i]
p=int(n[i])+a
n[i]=str(p)
dfs(0,b,n,i+1)
n[i]=x
if(b>=cnt2):
x=n[i]
n[i]='9'
dfs(a,b-cnt2,n,i+1)
n[i]=x
dfs(a,b,n,0)
print(max(s))
0.0分
0 人评分
程序员的表白 (C语言代码)浏览:1575 |
【亲和数】 (C语言代码)浏览:588 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:561 |
Pascal三角 (C语言代码)浏览:1252 |
简单的a+b (C语言代码)浏览:564 |
C语言程序设计教程(第三版)课后习题8.2 (C语言代码)浏览:5275 |
本人酷爱递归实现很多问题,这里也是浏览:632 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:628 |
C语言程序设计教程(第三版)课后习题8.8 (C语言代码)浏览:895 |
【求[X,Y]内被除3余1并且被除5余3的整数的和】 (C语言代码)浏览:703 |