Go Back   KLNetBB > DIỄN ĐÀN CÁC LĨNH VỰC > Kimlien Clubs > KITC - Góc Công Nghệ

 

icon1 Những bài toán trong Turbo Pascal
Old 27-10-2008, 12:54  

Senior Member
 
Join Date: 20-08-2008
Posts: 274
KL$ (TOP! 34): 3.743
Awarded 21 time(s)
Sent 101 thank(s)
Received 73 thank(s)
School: PTTH Kim Liên
Class: A2 (2008-2011)
Location: [*.HN.*]

Vì lớp 10 đang học thuật toán (Tin) mà hầu như chẳng ai hiểu gỉ.
Vì vậy sẽ mở 1 topic để bàn luận về những bài toán viết = TP
em thấy có cái topic về C+ nhưg chưa học đến, TP cho đơn giản
Mở đầu topic, e đang làm 1 bài toán = TP, nghĩ ra ý tg? nhưg nghe chừng khó thực hiện quá :-ss post lên để mngười cùng bàn ý tg? đc k a

Bt: Trò chơi bàn tròn : cho số N và dãy ai -> aN và số đếm k.
Khó nói đề bài nên e đưa VD
i 1 2 3 4 5 6 7
a 2 5 6 3 4 8 11

N là 7, số đếm chẳng hạn là 4 thì :
+ Lần 1 : a1,a2,a3,a4 (1,2,3,4) gạch a4
+ lần 2 : đêm từ a5- a6- a7- a1 (1,2,3,4 - 4 lần từ sau số bị gạch) lần này gạch a1
+ lần 3 : a2,a3,a5,a6 gạch a6
tương tự nt đến khi số cuối cùng sẽ là a2=5
Làm cách nào tìm ra số cuối cùng của dãy là a2 ạ ... ?



------------------------------
KyLynl

Award
+25 KL$
Chủ đề hay
Awarded By haqduong
candy is offline  

Re: Những bài toán trong Turbo Pascal
Old 29-10-2008, 15:20  

Senior Member
 
Join Date: 17-08-2008
Posts: 267
KL$: 30
Awarded 18 time(s)
Sent 134 thank(s)
Received 88 thank(s)
School: PTTH Kim Liên
Class: A1 (2008-2011)
Location: Hà Nội - Trái tim Tổ quốc

Dễ mà !
Đầu tiên ông bạn dùng lệnh lặp "while to do", chừng nào N>1 thì tăng i từ 1 đến N, mỗi lần i tăng thì lại tăng 1 biến dem.
Nếu dem = 4 thì:
1. Delete phần tử a[i], bằng cách gán liên tục a[i]:=a[i+1], a[i+1]:=a[i+2], .. , a[n-1]:=a[n];
2. Giảm N đi 1 đơn vị (N:=N-1);
3. Khởi tạo dem:=0;
Nếu i vượt quá N thì gán i bằng 1, lặp lại các thao tác trên
Khi kết thúc, giá trị duy nhất còn lại trong mảng a chỉnh là kết quả !
Nhớ phải thx đấy nhá !

3 Thank(s) MrPaint Thanks siquanxoviet For 50 KL$: Đơn giản và hiệu quả
haqduong Thanks siquanxoviet For 1 KL$: @Paint: Đơn giản thì có nhưng hiệu quả thì phải xem lại
Illidan Thanks siquanxoviet For 1 KL$: @Paint: cái "đơn giản" này mà cho N với K khủng khiếp thì chạy như rùa hoặc chết hẳn =p
siquanxoviet is offline  

Re: Những bài toán trong Turbo Pascal
Old 29-10-2008, 16:24  

V.I.P
 
Join Date: 23-08-2005
Posts: 2.707
KL$: 854
Awarded 46 time(s)
Sent 489 thank(s)
Received 558 thank(s)
School: PTTH Kim Liên
Class: A7 (2005-2008)
Location: Hà Nội iu wí

Góp ý tí Học thuật toán thì ko liên quan gì đến ngôn ngữ lập trình (Pascal hay C) Ko hiểu giờ dạy ntn chứ thuật toán thường được dạy theo kiểu vẽ lưu đồ thuật toán ý (bắt đầu rồi thì input, xét điều kiện gì đấy, output, kết thúc) ~> Vậy liệu có nên sửa tên topic này đi 1 tí?

haqduong: bây giờ lên lớp ngồi đánh bài trong sgk vào anh ạ, dùng lưu đồ thì đa số các bạn hiện nay không thích còn làm kiểu liệt kê thì em không thích



------------------------------
Click here: Show ảnh người yêu của mọi người (Câu thank )
MrPaint is offline  

Re: Những bài toán trong Turbo Pascal
Old 29-10-2008, 16:46  

Senior Member
 
Join Date: 20-08-2008
Posts: 274
KL$ (TOP! 34): 3.743
Awarded 21 time(s)
Sent 101 thank(s)
Received 73 thank(s)
School: PTTH Kim Liên
Class: A2 (2008-2011)
Location: [*.HN.*]

Quote:
Originally Posted by MrPaint View Post
Góp ý tí Học thuật toán thì ko liên quan gì đến ngôn ngữ lập trình (Pascal hay C) Ko hiểu giờ dạy ntn chứ thuật toán thường được dạy theo kiểu vẽ lưu đồ thuật toán ý (bắt đầu rồi thì input, xét điều kiện gì đấy, output, kết thúc) ~> Vậy liệu có nên sửa tên topic này đi 1 tí?

haqduong: bây giờ lên lớp ngồi đánh bài trong sgk vào anh ạ, dùng lưu đồ thì đa số các bạn hiện nay không thích còn làm kiểu liệt kê thì em không thích
... ok tùy a thôi



------------------------------
KyLynl
candy is offline  

Re: Những bài toán trong Turbo Pascal
Old 29-10-2008, 20:43  

Senior Member
 
Join Date: 17-08-2008
Posts: 267
KL$: 30
Awarded 18 time(s)
Sent 134 thank(s)
Received 88 thank(s)
School: PTTH Kim Liên
Class: A1 (2008-2011)
Location: Hà Nội - Trái tim Tổ quốc

@haqduong: Thì sáng nay trên KITC, ông bạn candy có nói là càng đơn giản càng tốt nên em post thuật toán đơn giản, dễ hiểu nhất thôi !
siquanxoviet is offline  

Re: Những bài toán trong Turbo Pascal
Old 29-10-2008, 21:19  

V.I.P
 
Join Date: 23-08-2005
Posts: 2.707
KL$: 854
Awarded 46 time(s)
Sent 489 thank(s)
Received 558 thank(s)
School: PTTH Kim Liên
Class: A7 (2005-2008)
Location: Hà Nội iu wí

Có vẻ bất cập nhì? Cơ mà ngoài thuật toán "trâu bò" kia còn có thuật toán nào để xử lý bài toán tìm phần tử cuối cùng?

Nếu chẳng may bắt mình làm thì chắc mình sẽ làm 1 boolean array, fill giá trị true Loại thằng nào thì cho nó thành false và tăng biến đếm. Khi nào đếm = n-1 thì dừng. Sau đó thì duyệt boolean array tìm index giá trị vẫn còn là true ~> tra bảng giá trị và chả lại kết quả

Any better idea?



------------------------------
Click here: Show ảnh người yêu của mọi người (Câu thank )
MrPaint is offline  

Re: Những bài toán trong Turbo Pascal
Old 30-10-2008, 12:24  

Senior Member
 
Join Date: 20-08-2008
Posts: 274
KL$ (TOP! 34): 3.743
Awarded 21 time(s)
Sent 101 thank(s)
Received 73 thank(s)
School: PTTH Kim Liên
Class: A2 (2008-2011)
Location: [*.HN.*]

Quote:
Originally Posted by siquanxoviet View Post
Dễ mà !
Đầu tiên ông bạn dùng lệnh lặp "while to do", chừng nào N>1 thì tăng i từ 1 đến N, mỗi lần i tăng thì lại tăng 1 biến dem.
Nếu dem = 4 thì:
1. Delete phần tử a[i], bằng cách gán liên tục a[i]:=a[i+1], a[i+1]:=a[i+2], .. , a[n-1]:=a[n];
2. Giảm N đi 1 đơn vị (N:=N-1);
3. Khởi tạo dem:=0;
Nếu i vượt quá N thì gán i bằng 1, lặp lại các thao tác trên
Khi kết thúc, giá trị duy nhất còn lại trong mảng a chỉnh là kết quả !
Nhớ phải thx đấy nhá !
đến khi đếm > số phần từ (k>N) thì sao mô phỏng ra xem nào nghe có vẻ k ổn



------------------------------
KyLynl
candy is offline  

Re: Những bài toán trong Turbo Pascal
Old 30-10-2008, 18:46  

Senior Member
 
Join Date: 17-08-2008
Posts: 267
KL$: 30
Awarded 18 time(s)
Sent 134 thank(s)
Received 88 thank(s)
School: PTTH Kim Liên
Class: A1 (2008-2011)
Location: Hà Nội - Trái tim Tổ quốc

Quote:
Originally Posted by candy View Post
đến khi đếm > số phần từ (k>N) thì sao mô phỏng ra xem nào nghe có vẻ k ổn
Khi i vượt quá n thì i sẽ quay về 1, rồi lại tăng, có gì khó hỉu đâu
siquanxoviet is offline  

Re: Những bài toán trong Turbo Pascal
Old 31-10-2008, 10:55  

God Member
 
Join Date: 24-03-2003
Posts: 859
KL$: 194
Awarded 6 time(s)
Sent 9 thank(s)
Received 29 thank(s)
Class: A1 (2009-2012)
Location: Hakurei Shrine

^ Cách làm của ku Pon (làm một array A [1..maxint] boolean rồi fill true/false) tốt hơn là mất công đếm rồi gán lại đấy =) Mà hình như cũng được luôn cho tất cả trường hợp bài này (không rõ, anh không có pascal nên chưa thử với N và K đủ to được =p). Nếu gán lại như siquan thì thời gian chạy sẽ rất rùa bò.

Bài này lên cao (trường hợp N K khổng lồ và bài toán ngược (cho biết người cuối cùng, tìm người đầu tiên)) thì có thể dùng cái gọi là danh sách liên kết (tự đọc sách, lười giải thích ). Nhưng hôm trước anh không rõ, giờ thì biết nếu chỉ là bài bình thường ở trường thôi chắc không phải để ý đến cách đấy làm gì cho phức tạp



------------------------------
May it be so that you are shattered.
I welcome the defeated, the aged. Surrender to me, learn from me, obey me.
May you be at rest. Do not forget the song, do not forget the prayer, do not forget myself. I relieve you of all burdens.
Illidan is offline  

Re: Những bài toán trong Turbo Pascal
Old 01-11-2008, 04:12  

V.I.P
 
Join Date: 23-08-2005
Posts: 2.707
KL$: 854
Awarded 46 time(s)
Sent 489 thank(s)
Received 558 thank(s)
School: PTTH Kim Liên
Class: A7 (2005-2008)
Location: Hà Nội iu wí

Quote:
Originally Posted by Illidan View Post
^ Cách làm của ku Pon (làm một array A [1..maxint] boolean rồi fill true/false) tốt hơn là mất công đếm rồi gán lại đấy =) Mà hình như cũng được luôn cho tất cả trường hợp bài này (không rõ, anh không có pascal nên chưa thử với N và K đủ to được =p). Nếu gán lại như siquan thì thời gian chạy sẽ rất rùa bò.

Bài này lên cao (trường hợp N K khổng lồ và bài toán ngược (cho biết người cuối cùng, tìm người đầu tiên)) thì có thể dùng cái gọi là danh sách liên kết (tự đọc sách, lười giải thích ). Nhưng hôm trước anh không rõ, giờ thì biết nếu chỉ là bài bình thường ở trường thôi chắc không phải để ý đến cách đấy làm gì cho phức tạp
Em nghĩ dùng danh sách kết nối thì cao cấp quá Được cái chạy cực nhanh nhưng với n lớn thì bộ nhớ không biết thế nào mà lần Có lần dùng danh sách kết nối tìm số nguyên tố rồi theo dõi bộ nhớ mới thấy là...

Tóm lại, mọi người xem cách dùng bảng tham chiếu boolean thôi



------------------------------
Click here: Show ảnh người yêu của mọi người (Câu thank )
MrPaint is offline  

Re: Những bài toán trong Turbo Pascal
Old 03-11-2008, 22:23  

New Member
 
Join Date: 11-01-2008
Posts: 26
KL$: 199
Sent 2 thank(s)
Received 2 thank(s)
School: PTTH Kim Liên
Class: A3 (2007-2010)

Anh paint vs anh dương chỉ cho em mấy cái thuật toán liên thông vs ah, em đọc chẳng hiểu gì cả.
@ Dương: đội tuyển học sau tiết 3 thứ 4 nhá! Anh bỏ hơi bị lắm rồi đêy!!
quan is offline  

Re: Những bài toán trong Turbo Pascal
Old 03-11-2008, 22:31  

New Member
 
Join Date: 03-11-2008
Posts: 12
KL$: 252
Awarded 3 time(s)
Sent 2 thank(s)
Received 4 thank(s)
School: Tokiwadai
Class: A1 (2008-2011)
Location: Gakuen Toshi

Quote:
Anh paint vs anh dương chỉ cho em mấy cái thuật toán liên thông vs ah
Eto... liên thông có phải là loang rộng và loang sâu không? Bây giờ cấp 3 trường mình cũng phải học cái đấy rồi à o.o" vãi nhỉ :d



------------------------------
Just a certain scientific railgun

Watching: Chaos; Head, Kannagi, Akane-iro ni Somaru Saka, To Aru Majutsu no Index, Clannad

1 Thank(s) Illidan Thanks Mikoto For 1 KL$: Chết, quên không log out account của con em
Mikoto is offline  

Re: Những bài toán trong Turbo Pascal
Old 03-11-2008, 22:52  

V.I.P
 
Join Date: 23-08-2005
Posts: 2.707
KL$: 854
Awarded 46 time(s)
Sent 489 thank(s)
Received 558 thank(s)
School: PTTH Kim Liên
Class: A7 (2005-2008)
Location: Hà Nội iu wí

Kinh quá, mình thề là mình chưa nghe đến thuật toán liên thông bao giờ ý Các em bây giờ còn đi học đội tuyển, thật là kinh khủng quá đi Hic hic. Thấy nuối tiếc cho bản thân



------------------------------
Click here: Show ảnh người yêu của mọi người (Câu thank )
MrPaint is offline  

Re: Những bài toán trong Turbo Pascal
Old 03-11-2008, 23:09  

God Member
 
Join Date: 24-03-2003
Posts: 859
KL$: 194
Awarded 6 time(s)
Sent 9 thank(s)
Received 29 thank(s)
Class: A1 (2009-2012)
Location: Hakurei Shrine

Quote:
Kinh quá, mình thề là mình chưa nghe đến thuật toán liên thông bao giờ ý
Anh tưởng chỉ dân đen thôi chứ Admin mà cũng phét à



------------------------------
May it be so that you are shattered.
I welcome the defeated, the aged. Surrender to me, learn from me, obey me.
May you be at rest. Do not forget the song, do not forget the prayer, do not forget myself. I relieve you of all burdens.
Illidan is offline  

Re: Những bài toán trong Turbo Pascal
Old 03-11-2008, 23:38  

V.I.P
 
Join Date: 23-08-2005
Posts: 2.707
KL$: 854
Awarded 46 time(s)
Sent 489 thank(s)
Received 558 thank(s)
School: PTTH Kim Liên
Class: A7 (2005-2008)
Location: Hà Nội iu wí

Quote:
Originally Posted by Illidan View Post
Anh tưởng chỉ dân đen thôi chứ Admin mà cũng phét à
Ơ, hem biết thật +_+ Vừa đi Google có tí sáng tỏ Tìm liên thông thì chơi vừa rộng vừa sâu chắc là ra thôi nhỉ Cơ mà thế thì độ phức tạp cũng khiếp No idea



------------------------------
Click here: Show ảnh người yêu của mọi người (Câu thank )
MrPaint is offline  

Re: Những bài toán trong Turbo Pascal
Old 04-11-2008, 12:34  

V.I.P
 
Join Date: 12-06-2007
Posts: 1.174
KL$ (TOP! 2): 17.089
Awarded 178 time(s)
Sent 228 thank(s)
Received 76 thank(s)
School: PTTH Kim Liên
Class: A1 (2006-2009)
Location: anywhere

Quote:
Originally Posted by quan View Post
Anh paint vs anh dương chỉ cho em mấy cái thuật toán liên thông vs ah, em đọc chẳng hiểu gì cả.
@ Dương: đội tuyển học sau tiết 3 thứ 4 nhá! Anh bỏ hơi bị lắm rồi đêy!!
Thằng ku Đức nó không báo anh em ạ Thằng này nó không báo anh coi như nghỉ
Còn vấn đề liên thông: em đọc sách nào thế? liên thông thì cứ bfs || dfs mà chơi, tùy bài



------------------------------
Hà Quang Dương
blog.haqduong.com
haqduong is offline  
 

KLNetBB - Member of Kimlien Network
Copyright © 2002-2009 by dcuongtran
Skin designed by Kusanagi - Banner designed by FunkyJan
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.