学习笔记

 
<贪心算法>学习笔记
-----程序 | 三少爷
例子1. 删数问题
键盘输入一个高精度的正整数N,去掉其中任意S个数字后剩下的按原左右次序组成一个新的正整数,编程对给定的N和S,寻找一种方案使得剩下的数字组成的新数最小.
例如N=176845;    S=4;
最小数=14;
代码:{delphi2007编译通过}
program find_min_integer;
{$APPTYPE CONSOLE}
uses
 SysUtils;
var
 N:string;
 S,i:integer;
begin
 write('N=');readln(N);
 write('S=');readln(S);
 
 while S>0 do
 begin
    i:=1;
    while (i<length(N))and(n[i]<=n[i+1]) do inc(i);
    delete(N,i,1);
    dec(s);
 end;
 
 while (length(N)>1)and(N[1]='0') do delete(n,1,1);
 write(N);
 readln;
end.
 
PS:固定的颜色,与循环颜色对应
 
S=4;
Length(N)=6 à N=’176845’;
I:=1 à N[1]:=1 ;N[2]:=7; à i:=2;
I:=2 à N[2]:=7 ;N[3]:=6;
Delete(N,2,1) à N=’16845’;
Dec(S)=3;
 
S=3;
Length(N)=5 à N=’16845’;
I:=1 à N[1]:=1 ;N[2]:=6; à i:=2;
I:=2 à N[2]:=6 ;N[3]:=8; à i:=3;
I:=3 à N[3]:=8 ;N[4]:=4;
Delete(N,3,1) à N=’1645’;
Dec(S)=2;
 
S=2;
Length(N)=4 à N=’1645’;
I:=1 à N[1]:=1 ;N[2]:=6; à i:=2;
I:=2 à N[2]:=6 ;N[3]:=4;
Delete(N,2,1) à N=’145’;
Dec(S)=1;
 
S=1;
Length(N)=3 à N=’145’;
I:=1 à N[1]:=1 ;N[2]:=4; à i:=2;
I:=2 à N[2]:=4 ;N[3]:=5; à i:=3;
Delete(N,3,1) à N=’14’;
Dec(S)=0;
 
绿色循环结束,黄色也随之结束.代码的分析就是这样.
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值