0
点赞
收藏
分享

微信扫一扫

POJ 1950(不打表做法)

梦幻之云 2022-10-25 阅读 55


这题就是搜……

注意设定maxn 要不然肯定爆 maxn=1*10^最大位数/2 1234..89-11121314这样的

Program aa;
const
maxn=1000000000000000;
var
n,t:longint;
a:array[1..15] of char;
procedure dfs(l,sum,res,bl:int64);
var
i,j:longint;
begin
if l=n then
begin
res:=res+bl*sum;
if res=0 then
begin
inc(t);
if t<=20 then
begin
for i:=1 to n-1 do write(i,' ',a[i],' ');
writeln(n);


end;
end;


exit;
end;

a[l]:='+';
dfs(l+1,l+1,res+bl*sum,1);
a[l]:='-';
dfs(l+1,l+1,res+bl*sum,-1);
a[l]:='.';
if sum<=maxn then
if l+1<=9 then
dfs(l+1,sum*10+(l+1),res,bl)
else
dfs(l+1,sum*100+(l+1),res,bl);


end;
begin
{ assign(output,'a.pas');
rewrite(output);
}
read(n);
t:=0;
dfs(1,1,0,1);
writeln(t);

// close(output);
end.



举报

相关推荐

0 条评论