学习笔记

 
<贪心算法>学习笔记
-----程序 | 三少爷
例子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
    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;
 
绿色循环结束,黄色也随之结束.代码的分析就是这样.
 

你可能感兴趣的:(学习笔记)