| đổi tiền | |
|
|
Tác giả | Thông điệp |
---|
littlelee Admin
Tổng số bài gửi : 415 Join date : 20/12/2009 Age : 29 Đến từ : Nghĩa địa
| Tiêu đề: đổi tiền Mon 19 Jul 2010, 15:54 | |
| - Code:
-
program doi_tien; const fi='doitien.inp'; fo='doitien.out'; var a:array[1..20] of integer; i,j,g,n,k:integer; f:text; l:array[0..20,0..1000] of integer;
procedure nhap; begin assign(f,fi); reset(f); readln(f,n,k); for i:=1 to n do read(f,a[i]); close(f); end;
procedure tinh; begin for i:=0 to n do for j:=0 to k do l[i,j]:=+maxint; l[0,0]:=0; for i:=1 to n do for j:=0 to k do begin l[i,j]:=l[i-1,j]; for g:=0 to j div a[i] do if (l[i-1,j-a[i]*g])<maxint then if l[i,j]>l[i-1,j-a[i]*g]+g then l[i,j]:=l[i-1,j-a[i]*g]+g; end; end;
procedure xuat; begin assign(f,fo); rewrite(f); if l[n,k]>=maxint then writeln(f,'Ko doi duoc.') else writeln(f,l[n,k]); close(f); end;
begin nhap; tinh; xuat; end. | |
|
| |
hoangtin14 Mèo con
Tổng số bài gửi : 96 Join date : 08/02/2010 Age : 29 Đến từ : Bình Định
| Tiêu đề: Re: đổi tiền Tue 20 Jul 2010, 21:49 | |
| bài này giống bài thi tỉnh của mình đó lit. Tuy nhiên ko nên đọc dữ liệu như thế, dùng EOF thì đọc dc nhìu hơn.
Chắc sẽ giải nghệ, không theo pascal nữa. | |
|
| |
littlelee Admin
Tổng số bài gửi : 415 Join date : 20/12/2009 Age : 29 Đến từ : Nghĩa địa
| Tiêu đề: Re: đổi tiền Wed 21 Jul 2010, 17:17 | |
| Bài ni mình làm khi học bồi dưỡng. Mà nhìu hơn là sao. ^^ Giải nghệ ko theo pas nữa, thế theo cái chi. Đừng nói C hay C++ chứ | |
|
| |
littlelee Admin
Tổng số bài gửi : 415 Join date : 20/12/2009 Age : 29 Đến từ : Nghĩa địa
| Tiêu đề: Re: đổi tiền Wed 21 Jul 2010, 17:22 | |
| Thật ra tính trong ngôn ngữ lập trình, tớ thích pas hơn cả vì thứ nhất C và C++ nay đã it dùng hơn rồi (trừ dân đại học). Các cuộc thi thường cho phép làm pas vì nó gần với cái đã học ở chương trình phổ thông. Thứ hai, nói ra thì đụng đến các bạn học VB,Java,.. , thôi chứ thật ra cho 1 tháng, dân vip pas có thể làm tốt đến ít nhất là 8/10 các bài thuwongf gặp ở mấy cáu còn lại, trong khi dân mấy cái đó chưa chắc làm được như thế ^^. Bởi vì rất đơn giản, pas và những ngôn ngữ mang đặc tính tương tự như khung sắt, còn mấy cái khác như hồ và sơn thôi. Tất nhiên cái chi cũng có cái hay, cái khó của nó. Nhưng còn phải xét đến mức độ ^^ | |
|
| |
hoangtin14 Mèo con
Tổng số bài gửi : 96 Join date : 08/02/2010 Age : 29 Đến từ : Bình Định
| Tiêu đề: Re: đổi tiền Wed 21 Jul 2010, 19:09 | |
| Mình đang chuyển sang nghiên cứu Visual Basic mà cả tháng rùi vẫn mù tịt. :( | |
|
| |
hoangtin14 Mèo con
Tổng số bài gửi : 96 Join date : 08/02/2010 Age : 29 Đến từ : Bình Định
| Tiêu đề: Re: đổi tiền Wed 21 Jul 2010, 19:11 | |
| Nhìu hơn ý là trong file nguồn có nhìu dòng ý mà. Dùng EOF thì đọc được hết Bài cậu làm chỉ khác tớ chỗ đó thui. Còn lại thì y chang như bài thi của tớ | |
|
| |
littlelee Admin
Tổng số bài gửi : 415 Join date : 20/12/2009 Age : 29 Đến từ : Nghĩa địa
| Tiêu đề: Re: đổi tiền Thu 22 Jul 2010, 20:19 | |
| Vb thì để lập phần mềm. Học cái đồ họa và một số cái liên quan đến máy, OS là chủ yếu | |
|
| |
hoangtin14 Mèo con
Tổng số bài gửi : 96 Join date : 08/02/2010 Age : 29 Đến từ : Bình Định
| Tiêu đề: Re: đổi tiền Thu 22 Jul 2010, 20:26 | |
| năm sau hy vọng sẽ có đủ tay nghề làm phần mềm đi thi | |
|
| |
littlelee Admin
Tổng số bài gửi : 415 Join date : 20/12/2009 Age : 29 Đến từ : Nghĩa địa
| Tiêu đề: Re: đổi tiền Thu 22 Jul 2010, 20:29 | |
| ^^ . Chúc thi quốc gia. Đến lúc đó mình hok có mặt ^^. năm ni thi xong, có lẽ phải bỏ tin, sang toán. Cũng chán nhưng phải thế thôi, giờ đã đi chuyên toán rồi. ^^ | |
|
| |
Hovanthong Admin
Tổng số bài gửi : 101 Join date : 25/07/2010 Age : 30 Đến từ : Hưng nguyên-Nghệ An
| Tiêu đề: Re: đổi tiền Mon 26 Jul 2010, 21:43 | |
| - Code:
-
const mn=101; max=1000001; var f:text; a: array[0..mn] of longint; l: array[0..max] of longint; n,m,dem: longint; procedure input; var i: longint; begin readln(n,m); for i:=1 to n do read(a[i]); end; procedure QHD; var i,j: longint; begin For i:=1 to n do l[i]:=max; l[0]:=0; For j:=1 to m do for i:=1 to n do begin if (j>=a[i]) then if (l[j]=0)or(l[j] > l[j-a[i]]+1) then l[j]:=l[j-a[i]]+1; end; end; procedure Qsort(l,r: longint); var x,y,i,j: longint; begin if l>=r then exit; i:=l; j:=r; x:=a[random(r-l+1)+l]; Repeat While (a[i]<x) do inc(i); While (a[j]>x) do dec(j); if (i<=j) then begin if i<j then begin y:=a[i];a[i]:=a[j];a[j]:=y; end; inc(i); dec(j); end; Until (i>j); Qsort(i,r);Qsort(l,j); end; procedure xuli; var i: longint; begin dem:=0; Qsort(1,n); i:=n; if (m mod a[n] >= 1000) or (m mod a[n] = 0) then begin dem := m div a[n]; m := m mod a[n]; end else begin dem := (m - 1000) div a[n] + 1; m := m - dem*a[n]; end; QHD; dem:=dem+l[m]; end; procedure printf; begin writeln(dem); end; BEGIN Input; xuli; printf; end.
| |
|
| |
Hovanthong Admin
Tổng số bài gửi : 101 Join date : 25/07/2010 Age : 30 Đến từ : Hưng nguyên-Nghệ An
| Tiêu đề: Re: đổi tiền Mon 26 Jul 2010, 21:49 | |
| Đề bài này là: - Trích dẫn :
Bạn được cho một tập hợp các mệnh giá tiền. Tập hợp luôn chứa phần tử mang gía trị 1. Mỗi mệnh giá có vô hạn các đồng tiền mang mệnh giá đó. Cho số tiền S, hãy tìm cách đổi S thành ít đồng tiền nhất, sao cho mỗi đồng tiền có mệnh giá thuộc vào tập hợp đã cho. Input
Dữ liệu vào gồm 2 dòng:
* Dòng 1: Hai số nguyên dương N (số phần tử của tập hợp mệnh giá tiền) và S (số tiền cần đổi) (1 ≤ N ≤ 100; 1 ≤ S ≤ 109 ). * Dòng 2: N số nguyên dương biểu thị mệnh giá của các phần tử trong tập hợp (giá trị không vượt quá 100).
Output
Dữ liệu ra gồm một số nguyên duy nhất là số đồng tiền ít nhất có thể đổi được. Example
Input: 2 3 1 2
Output: 2
| |
|
| |
Sponsored content
| Tiêu đề: Re: đổi tiền | |
| |
|
| |
| đổi tiền | |
|