最小步數 用pascal

2025-05-24 07:50:16 字數 4958 閱讀 7996

1樓:網友

改梁/dpvar a,b,n:longint;

v:array[0..100]of longint;

f:array[0..150,0..150]of longint;

function max(a,b:longint):longint;

beginif a>b then exit(a) else exit(b);

end;procedure print;

beginfor b:=0 to n doif f[n,b]>=0 then

beginwrite(n-b-1);

exit;end;

write(-1);

end;begin

read(n);

fillchar(f,sizeof(f),129);

for a:=1 to n do read(v[a]);

f[0,0]:=0;

f[i,j]跳j次到第如清i步核橡運剩餘最大值。

for a:=1 to n do

for b:=0 to a do

beginf[a,b]:=max(f[a-1,b-1]-100,f[a-1,b]+v[a]);

if f[a,b]<0 then f[a,b]:=10000000;

end;print;

end.

pascal 最小數

2樓:聽不清啊

樓主的程式不知道是做什麼用的。只是糾正了語法錯誤,也不知道是否還有問題。

var n,s,t:string;i,j,k,m:longint;a:integer;

beginread(n);i:=1;

while n[i]<>' 'do begin s:=s+n[i];i:=i+1;end;

for j:=i to length(n)do if n[j]<>' 'then begin k:=j;break;end;

for i:=k to length(n)do t:=t+n[i];i:=0; val(t,k,a);m:=0;

while iwriteln(n);

end.

pascal 求最大數最小數

3樓:網友

pascal中沒有return之類返回結果嗎?還有你的陣列下標對嗎?

pascal語言:輸入n個數,並輸出最大的數和最小的數

4樓:網友

vari,n,m,max,min:longint;

beginreadln(n);

max:=-maxlongint;

min:=maxlonint;//初始化。

for i:=1 to n do

beginreadln(m);//輸入乙個數,迴圈n次if m>max then max:=m;

if mwriteln(max)//最大;

writeln(min);//最小。

5樓:

vari,n,max,min:integer;

a:array[1..100]of integer;

beginreadln(n);//輸入n

max:=-maxint+1;//初始化。

min:=maxint;//初始化。

for i:=1 to n do

beginread(a[i]);//讀入每個數。

if a[i]>max then max:=a[i];//如果這個數大於max,則把值賦給max

if a[i]end;

writeln(max,' ',min);//輸出end.

pascal輸入十個數,列印出最大和最小的數

6樓:陽光上的橋

程式如下,delphi下除錯通過,應該適應各種pascal:

program test;

var x,max,min,i:integer;

beginwrite('輸入10個數:')read(x);max:=x;min:=x;

for i:=1 to 9 do

beginread(x);

if x>max then max:=x;

if xend;writeln('最大',max);

writeln('最小',min);

end.

7樓:尚巾月生

樓上的夠粗心,max:=minint;

min:=maxint;

初值!!!

pascal 取數

8樓:悲喜交加的人生

就是乙個很簡單的dp題。

varn,m,i,j,k,t,s,d:longint;

a:array[0..2001] of longint;

f:array[-2..2001,-2..2001] of longint;

function max(p,q:longint):longint;

beginif p>q then

exit(p)

elseexit(q);

end;begin

readln(n);

for i:=1 to n do

readln(a[i]);

fillchar(f,sizeof(f),0);

for i:=1 to n do

for j:=n downto i-1 dof[i,j]:=max(f[i,j+1]+(i-1+n-j)*a[j+1],f[i-1,j]+(i-j+n-1)*a[i-1]);

for i:=1 to n do

if ss:=f[i,i-1];

writeln(s);

end.

9樓:網友

可以用貪心的思想實現:

每次只考慮最左邊和最右邊的兩個數,將其中小的數先取出乘掉,必然能保證大的數乘以大的次數,使價值最大。

program getnum;

var i, j, n, value, time :longint;

store :array[1..500] of longint;

beginreadln(n);

for i :=1 to n do readln(store[i]);

i :=1;

j :=n;

time :=1;

value :=0;

while(i <=j) do beginif(store[i] value :=value +store[i] *time;

i :=i +1;

end else begin

value :=value +store[j] *time;

j :=j -1;

end;time :=time +1;

end;writeln(value);end.

當時想簡單了。

經樓上提醒,細想之後貪心應該是不對的。

樓上思想應該是沒錯的。

10樓:網友

樓上貪心不對的 這題是某年的noip題 要是那麼簡單就好了。

var i,n,j:longint;

max:int64;

a:array[1..5000] of longint;

v:array[1..5000,1..5000] of int64;

function f(l,r:longint):int64;

var num1:longint;

beginif l=r then beginexit(a[l]*n);

end;if v[l,r]<>maxlongint then exit(v[l,r]);

num1:=f(l+1,r)+(l+n-r)*a[l];

v[l,r]:=f(l,r-1)+(l+n-r)*a[r];

if num1>v[l,r] then v[l,r]:=num1;

exit(v[l,r]);

end;begin

readln(n);

for i:=1 to n do read(a[i]);

for i:=1 to n do for j:=1 to n do v[i,j]:=maxlongint;

writeln(f(1,n));

end.

pascal程式設計最小親和數

11樓:白漬康生輯

子程式裡 那個s要賦燃備個初始值 就是 function sub(x:integer):integer; var i,s:

integer; begin **s:=0; for i:=1 to x-1 do if x mod i=0 then s:

s+i; sub:=s; end; 要不不清皮孝毀0 會出問題 程慎氏序寫的是對的。

.輸入10個數,列印出最大和最小的數.用pascal語言。誰知道?教教我!

12樓:陽光上的橋

很簡單,下面這樣就可以:

program exp;

var i,x,min,max:integer;

beginfor i:=1 to 10 dobeginread(x);

if (i=1) or (x>max) then max:=x;

if (i=1) or (xend;writeln('最大的數是:',max,',最小的數是:',min);

end.說明,以上程式未上機編譯,如果遇到問題請補充。

13樓:無敵小強終結者

多大的數?如果超過qword那就要用string225位讀取了,樓主說清楚一點。

如果是普通數字樓上的程式都可以,如果數字很大超過2的64次方,就要用字串處理了,程式先不打了,如果是的話可以問我。

用PASCAL求下面幾題

設長為a 寬為b 高為c 則依題意 a b c 12 1式 a a b b c c 8 8 64 2式 欲求表面積表示為 a b a c b c 2 則由1式兩邊平方得 a a b b c c a b a c b c 2 144 減去2式既得結果 表面積 a b a c b c 2 144 64 8...

用3,5,7,8,9,0,0,0主數讀零的最小八位數是多少

用3,5,7,8,9,0,0,0組數讀一個零的最小八位數是30057890,讀作 叄仟零伍萬柒仟捌佰玖拾。6,7,1,0,6,9,8,4,2組成八位數大約是一億的八位數是多少 八位數就是千萬,能夠大約到一億,那就要把最大的數放前面,這樣能組成的最大數是 987664210 如果是四捨五入算的話,只要...

最小的自然數是幾,自然數都有哪些 最小的自然數是幾

依現在數學課本的定義,自然數由0,1,2,3 組成,最小的自然數是0.自然數從0開始還是從1開始飽受爭議。從數論上來講,自然數從1開始,在集合論中,自然數從0開始。我國中小學教材中自然數是從0開始,新華字典 中自然數是從1開始。可以指正整數或非負整數,在數論通常用前者,而集合論和電腦科學則多數使用後...