一道简单的Pascal语言题目(中学)(1) pascal语言简单的题目(我要完整的程序)

\u4e00\u9053\u7b80\u5355\u7684Pascal\u8bed\u8a00\u7f16\u7a0b\u9898\uff08\u4e2d\u5b66\uff09

const
inf='chore.in';
ouf='chore.out';
type
line=^rec;
rec=object
num : longint;
next : line;
end;
graph=object
int : longint;
con, pre : line;
end;
var g : array[1..13000] of graph;
head, ph : array[1..13000] of line;
a, f, v : array[1..13000] of longint;
n : longint;

procedure initial;
var i, num, x, tot : longint;

procedure connect(s, e : longint);
var p : line;
begin
p:=g[s].con;
new(g[s].con);
g[s].con^.num:=e;
p^.next:=g[s].con;
p:=g[e].pre;
new(g[e].pre);
g[e].pre^.num:=s;
p^.next:=g[e].pre;
end;

procedure toposort;
var v, h, t : longint;
p : line;
begin
h:=0; t:=tot;
while t<n do begin
inc(h);
v:=a[h];
p:=head[v]^.next;
while pnil do begin
dec(g[p^.num].int);
if g[p^.num].int=0 then begin
inc(t);
a[t]:=p^.num;
end;
p:=p^.next;
end;
end;
end;

begin
readln(n);
for i:=1 to n do begin
new(head[i]); new(g[i].con);
head[i]:=g[i].con;
new(ph[i]); new(g[i].pre);
ph[i]:=g[i].pre;
end;
for i:=1 to n do begin
read(num);
read(v[i]);
read(x);
while x0 do begin
inc(g[num].int);
connect(x, num);
read(x);
end;
end;
tot:=0;
for i:=1 to n do begin
if g[i].int=0 then begin
inc(tot);
a[tot]:=i;
end;
g[i].con^.next:=nil;
end;
toposort;
end;

procedure main_process;
var i, ans, value : longint;
p : line;
begin
ans:=0;
for i:=1 to n do begin
p:=ph[a[i]]^.next;
value:=0;
while pnil do begin
if value<f[p^.num] then value:=f[p^.num];
p:=p^.next;
end;
f[a[i]]:=value+v[a[i]];
if ans<f[a[i]] then ans:=f[a[i]];
end;
writeln(ans);
end;

begin
assign(input,inf); reset(input);
assign(output,ouf); rewrite(output);
initial;
main_process;
close(output);
close(input);
end.

\u5148\u505a\u4e00\u4e2a
\u9898\u4e09

Program succor;
var a,b:array[1..100] of longint;
m,i,j:integer;
t,n:longint;
f:boolean;
fg,eg:text;

Begin
assign(fg,'succor.in');
reset(fg);
assign(eg,'succor.out');
rewrite(eg);
readln(m);
read(fg,a[1]); b[1]:=1;
i:=1;
repeat
i:=i+1;
b[i]:=0; f:=true;
read(fg,n);
for j:=1 to i-1 do
if n=a[j] then begin b[j]:=b[j]+1; f:=false; end;
if f then begin a[i]:=n; b[i]:=b[i]+1; end;
until i=m;
for i:=1 to m-1 do
for j:=i+1 to m do begin
if b[i]<b[j] then begin
t:=a[i]; a[i]:=a[j]; a[j]:=t;
t:=b[i]; b[i]:=b[j]; b[j]:=t; end;
if b[i]=b[j] then
if a[i]>a[j] then
begin t:=a[i]; a[i]:=a[j]; a[j]:=t; end;
end;
write(eg,a[1]);
for i:=2 to m do if a[i]0 then
write(eg,'->',a[i]);
close(fg);
close(eg);

Writeln('Press [Enter] to continue ... ');
Readln;
End.

说一下我的思想,从10元开始试,分别枚举每一个面值直到没钱(从大到小枚举)一旦总钱数包括这个面值,就尽量多的用这个面值来“换开”总钱数,余下的留给后面枚举,可以证明一定能够找出来(有一分的)而且可以证明一定是最优解
const rmb:array[1..10]of integer=(1000,500,200,100,50,20,10,5,2,1);//先把面值存进数组里,便于后面使用
var b:real;a,tot:longint;i:integer;ans:array[1..10]of longint;
begin
readln(b);
a:=trunc(b*100);//转换成以分为单位的钱数,便于计算
for i:=1 to 10 do//从10元开始枚举
begin
if a>rmb[i] then begin//一旦能够“换开”
inc(ans[i],a div rmb[i]);//记下来用了多少张
inc(tot,a div rmb[i]);//同上
dec(a,a div rmb[i]*rmb[i]);//总钱数里减去“换开”的面值
end;
if a=0 then break;//一旦全部换开了就不用在试了
end;
writeln(tot);//接下来就是输出了
for i:=1 to 10 do
writeln(rmb[i]/100:0:2,ans[i]);
end.

中学的,真强啊,

我们在大学才接触到计算机呀!

这个是一个算法思路!
从大到小的分法。
X div 10
再(X MOD 10)DIV 5
再(X MOD 5)DIV 2

以此类推!

楼下的太弱了吧,我才初一啊!
算法就是:
1、把钱数扩大一百倍(整数方便运算,pascal的real数据类型很麻烦的)
也就是总数变成1732,然后10元变1000...
2、10元的钱数:=总数 div 1000,
然后总数:=总数 mod 1000,
5元的钱数:=总数 div 500,
然后总数:=总数 mod 500,
...
是有点长可算法很简单,不用动脑

1L确实很弱的说...

我也是中学.

这就是一个贪心算法.因为无论怎样都可以凑到你想要的钱,所以只需要竟可能取面值大的就可以了.

楼下说的很详细了,乘以100确实方便.

  • pascal 鐨勫垵绾ч
    绛旓細棰樼洰鍚嶇О 闄堕櫠鎽樿嫻鏋 鏍¢棬澶栫殑鏍 鏄庢槑鐨勯殢鏈烘暟 鐗规畩鐨勮川鏁拌倠楠 浠e彿 apple tree random sprime 杈撳叆鏂囦欢 apple .in tree .in random .in sprime .in 杈撳嚭鏂囦欢 apple .out tree .out random .out sprime .out 鏃堕檺 1绉 1绉 1绉 1绉 绗竴棰 闄堕櫠鎽樿嫻鏋 (apple.pas/c/cpp)銆愰棶棰樻弿杩般戦櫠闄...
  • 涓閬寰绠鍗曠殑pascal闂,鍙渶瑙i噴銆棰樼洰濡備笅涓鑸殑鏂囨湰缂栬緫鍣ㄩ兘鏈夋煡鎵...
    绛旓細s1:=' '+upcase(s1)+' '; 鏄负浜嗗垽瀹氱涓涓崟璇嶅拰鏈鍚庝竴涓崟璇嶆柟渚匡紙鍙互涓庝腑闂寸殑鍗曡瘝浠ュ悓鏍风殑浠g爜鍒ゅ畾锛塮or i:=1 to {length(s2)-l+1} do 涓句緥璇达紝s2闀垮害涓100锛岃宻1闀垮害涓10銆傚垯寰幆涓篺or i:=1 to 91 do灏辨槸璇磗1鍦╯2涓殑璧风偣锛屾渶鍚庡彲鑳戒綅缃槸91寮濮嬬殑銆俰f p=-1 then p:...
  • 璺眰pascal棰搴
    绛旓細杈撳嚭:4(3)=13+15+17+19=64銆愮▼搴35銆戞潵鑷笉鍚屽浗瀹剁殑鍥涗綅鐣欏鐢烝,B,C,D鍦ㄤ竴璧蜂氦璋,浠栦滑鍙細涓佽嫳銆佹硶銆佹棩鍥涚璇█涓殑2绉,鎯呭喌鏄,娌℃湁浜烘棦浼氭棩璇張浼氭硶璇;A浼氭棩璇,浣咲涓嶄細,A鍜孌鑳戒簰鐩镐氦璋,B涓嶄細鑻辫,浣咥鍜孋浜よ皥鏃跺嵈瑕丅褰撶炕璇,B,C,D涓変釜鎯充簰鐩镐氦璋,浣嗕笉鍒板叡鍚鐨勮瑷,鍙湁涓绉嶈瑷3浜洪兘浼,...
  • 涓閬損ascal缂栫▼棰樼洰!鎬庝箞鐪嬩篃鐪嬩笉鎳傚畠鐨勬牱渚嬭緭鍏ュ拰鏍蜂緥杈撳嚭,姹傝В閲婂晩...
    绛旓細2銆佸鍦衡斺斾笌涓诲満鐩稿弽銆傛妸閭e満鍦ㄥ闃熺殑鍦板尯杩涜鐨勬瘮璧涙椂锛屽彨鍋氳繖涓悆闃熺殑瀹㈠満姣旇禌锛堝彇鎰忎簬鍘绘箹鍗楀仛瀹汉鍙傚姞姣旇禌锛夈備妇渚嬶細鍦ㄦ祹鍗楄繘琛岀殑閭d竴鍦烘瘮璧涳紝灏卞彨婀栧崡闃熺殑瀹㈠満锛岃屽湪闀挎矙杩涜鐨勯偅涓鍦烘瘮璧涳紝灏卞彨灞变笢闃熺殑瀹㈠満銆3銆佸叧浜棰樼洰鐨勬牱渚嬭緭鍏モ斺旀牱渚嬫槸涓涓闃靛舰鍔垮浘锛屾垜浠潵鐪嬩竴涓嬶紝浠ョ浜岀粍鏍蜂緥鏉ヨ...
  • pascal鐨勯鐩,鎴戝垰寮濮嬭嚜瀛,娌′功娌¤祫鏂檂甯笅蹇檂璋㈣阿鍝垀
    绛旓細1銆佽緭鍏ヤ袱涓暣鏁癮,b锛岃緭鍑哄畠浠殑鍜(|a|,|b|<=10^9)銆 娉ㄦ剰 1銆pascal浣跨敤integer浼氱垎鎺夊摝锛2銆佹湁璐熸暟鍝︼紒3銆乧/c++鐨刴ain鍑芥暟蹇呴』鏄痠nt绫诲瀷锛岃屼笖鏈鍚庤return 0銆傝繖涓嶄粎瀵规礇璋峰叾浠棰樼洰鏈夋晥锛岃屼笖涔熸槸noip/noi姣旇禌鐨勮姹傦紒濂藉惂锛屽悓蹇椾滑锛屾垜浠氨浠庤繖涓棰樺紑濮嬶紝鍚戠潃澶х墰鐨勮矾杩涘彂銆傗滀换浣曚竴涓...
  • free pascal棰樼洰
    绛旓細鎴戞兂瑕佷竴浜涘叧浜庡皬瀛︾敓绔炶禌鐨勪竴浜pascal鐨勯鐩,鏄皬瀛︾敓鐨勩 灞曞紑  鎴戞潵绛 6涓洖绛 #鐑# 璇ヤ笉璇ヨ瀛╁瓙寰堟棭瀛︿範浜烘儏涓栨晠? 闆ㄥ贩鐙傛墠 2010-05-18 鐭ラ亾绛斾富 鍥炵瓟閲:10 閲囩撼鐜:0% 甯姪鐨勪汉:0 鎴戜篃鍘荤瓟棰樿闂釜浜洪〉 鍏虫敞 灞曞紑鍏ㄩ儴 銆愰『搴忕粨鏋勯鐩1銆 杈撳叆鍦嗙殑鍗婂緞,杈撳嚭鍦嗙殑闈㈢Н鍜屽懆闀...
  • 涓閬揚ascal灏忛棶棰,鎬!!!
    绛旓細涓閬揚ascal灏忛棶棰,鎬!!! 涓嬮潰鏄竴閬揚ascal灏忕▼搴弍rogramt2;constn=200;varsi,pr:setof2..n;x,j,m:integer;beginreadln(m);si:=[2..m];pr:=[];x:=2;repeatwhilenot(xinsi)dox:=succ(x);pr:=pr+[x];j:=x;whilej... 涓嬮潰鏄竴閬揚ascal灏忕▼搴弍rogram t2;const n=200;var si,pr:set of 2.....
  • 鍒濅竴Free pascal璇█棰樼洰
    绛旓細鍒濅竴Free pascal璇█棰樼洰 棰1銆佹眰Sn=a+aa+aaa+鈥+aa鈥涔嬪,鍏朵腑a鏄竴涓暟瀛椼備緥濡:2+22+222+2222+22222(姝ゆ椂n=5),n鐢遍敭鐩樿緭鍏ャ傞2銆佹墦鍗100-999涔嬮棿鎵鏈夌殑鈥滄按浠欒姳鏁扳濄傗滄按浠欒姳鏁扳濇槸涓涓笁浣嶆暟,鍏跺悇... 棰1銆佹眰Sn=a+aa+aaa+鈥+aa鈥 涔嬪,鍏朵腑a鏄竴涓暟瀛椼備緥濡:2+22+222+2222+22222...
  • 鍑犻亾绠鍗曠殑Pascal缂栫▼棰
    绛旓細1.var a,b:integer;begin readln(a,b);writeln(a+b);end;2.var s:real;begin s:=(8+12)*9/2;writeln(s:2:2)end.3.var a:integer;ge,bai,shi:integer;begin readln(a);ge:=a mod 100;bai:=a div 100;shi:=a-ge-bai*100;weiteln(ge,bai,shi);end.4.var a:array[1..3...
  • 鍑犱釜pascal鐨勯鐩銆傘傛ョ瓑!!
    绛旓細<maxlongint锛夛紝璁$畻瀹冨悇浣嶆暟瀛椾笂鐨勫拰銆傛牱渚嬭緭鍏ワ細35829083 鏍蜂緥杈撳嚭锛38 锛堟彁绀猴細鍙互鐢╳hile寰幆瀹屾垚姝ら锛塿ar s:string;x:longint;a,b,c,d:integer;begin readln(x);str(x,s);d:=0;for a:=1 to length(s) do begin val(s[a],b,c);d:=d+b;end;writeln(d);end....
  • 扩展阅读:一扫出答案 ... 搜题拍照秒出答案 ... 扫一扫卷子答案 ... pascal语言手机编程软件 ... pascal语言编程自学入门 ... 英语扫一扫题目出答案 ... 免费拍照答题一秒出答案 ... 看图写话扫一扫图 ... python和c++学哪个好 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网