Pascal程序笔迹:和为零
来源:互联网 发布:可以赚钱的app软件 编辑:程序博客网 时间:2024/05/20 01:36
<Pascal笔迹>>>和为零
作者:A_Ender
[题目介绍]
有n个数,分别是1,2..n,要你用加减或什么都不干,来使整个连起来的算式和为零。
[样例输入,输出]
输入1:5
输出1:1 2-3-4-5
输入2:6
输出2:1 2+3-4-5-6
[题目数据]
16>n>0
{本题套路}
搜索快线直通答案,注意可以什么都不干。
{算法详解}
{1}2到n个符号全部搜一遍(for i:=1 to 3 do)分别是空,+,-,然后调用和回溯。
{2}到n+1了判断是否为0。(当然你在n最后的if的时候也可以判断)
{算法演示}
回溯太难演示了(前几次我还有点耐心),还是看下图吧。
1 |
( )(+)(--) |
2 |
( )(+)(--) |
3 \/
得出:1+2-3=0
<代码实现>
var
n,i:longint;
a,b:array[1..1000] of longint;
function sc:longint;
var
b,c,i,k:longint;
begin
b:=1;
c:=0;
k:=2;
for i:=2 to n+1 do
begin
case a[i] of
1:b:=b*10+i;
2,3:begin
if k=2 then c:=c+b else c:=c-b;
k:=a[i];
b:=i;
end;
end;
end;
sc:=c;
end;
procedure dg(x:longint);
var
i:longint;
begin
if x>n then
begin
if sc=0 then
begin
write(1);
for i:=2 to n do
begin
if a[i]=1 then
write(' ');
if a[i]=2 then
write('+');
if a[i]=3 then
write('-');
write(i);
end;
writeln;
end;
end
else
begin
for i:=1 to 3 do
begin
a[x]:=i;
dg(x+1);
a[x]:=0;
end;
end;
end;
begin
read(n);
a[n+1]:=2;
dg(2);
end.
- Pascal程序笔迹:和为零
- Pascal程序笔迹:快速幂
- Pascal程序笔迹:弧形判断
- Pascal程序笔迹:steve挖矿
- C++程序面试笔迹一
- C++程序面试笔迹二
- C++程序面试笔迹四
- C++程序面试笔迹五
- C++程序面试笔迹六
- 笔迹
- 笔迹
- 【USACO2.3.3】和为零
- usaco2.3.3和为零
- 三数和为零
- 和为零(sum)
- 【USACO2.3.3】和为零
- LeetCode 3Sum 三个数和为零的集合 C++完整程序
- AFNetworking post和get请求笔迹
- 各种LINUX资源链接
- Python\opencv平移变换
- rabbitmq安装
- Java读取Excel
- 提交BUG的标准规范
- Pascal程序笔迹:和为零
- LeetCode 15. 3Sum
- 算法12.02
- Accelerated-c++-置换索引
- bzoj1901 Zju2112 Dynamic Rankings(主席树+树状数组)
- Robot Framework 源代码阅读笔记 之三
- 校oj195——双for用contiue加速
- 基于Vue2.0的音乐播放器(2)——歌手模块
- python爬虫案例-爬取西刺免费代理服务器IP等信息