Chủ đề: chỗ sai của 1 bài tập quay lui
-
12-12-2010, 03:29 AM #11
Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 3
Cái if bên trên bạn nói mình chưa nghĩ hẳn hoi về nó nhưng thông thường đó là những lệnh an toàn để giúp bạn thoát khỏi chương trình con, còn câu lệnh bên dưới là cần thiết vì những cái nào có free=false là những cái mình chọn, bỏ đi thì sẽ in sai.
-
12-12-2010, 04:43 AM #12
Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 3
Mình chép bài của bạn rồi sửa tí, mình chưa thử test nào sai, bạn thử test thử xem:
Mã:const fo='tenhs.inp'; fi='tenhs.out'; type mang=array[1..20] of string[7]; var f:text; b:mang; a:array[0..10] of byte; n,k:integer; procedure inputdata; var f:text; i:integer; begin assign(f,fo);reset(f); readln(f,n,k); for i:=1 to n do readln(f,b[i]); close(f); end; procedure xuat; var i:integer; begin for i:=1 to k do write(f,b[a[i]],' '); writeln(f); end; procedure xuli(i:integer); var j:integer; begin for j:=a[i-1]+1 to n do begin a[i]:=j; if (i=k) then xuat else xuli(i+1); end; end; Begin assign(f,fi);rewrite(f); inputdata; xuli(1); close(f); End.
-
12-12-2010, 06:10 PM #13
Silver member
- Ngày tham gia
- Aug 2015
- Bài viết
- 150
xin lỗi anh Ginta_ITFam nhưng khi em thử thì không in ra đc Hồng Minh ạ.
Còn với bài n=1000 thì chắc em sẽ suy nghĩ khá khá lâu để tìm ra phương pháp.
Và xin mời mọi người lại cùng em sửa chữa 1 bài tập quay lui nửa, xin hãy giúp đỡ
Đề: 4.4:Cho số nguyên dương n(n<=20), hãy liệt kê tất cả các xâu độ dài n chỉ gồm hai kí tự A và B sao cho không có 2 kí tự B nào đứng cạnh nhau.
Ví dụ:
Dữ liệu vào
Kết quả ra
N=4
AAAB
AABA
ABAA
ABAB
BAAA
BAAB
BABA
và em đã viết chương trình như sau:
[IMGRIGHT]const
fo='xau.inp';
fi='xau.out';
var
a:string[20];
n:byte;
f:text;
procedure inputdata;
var
f:text;
begin
assign(f,fo);reset(f);
read(f,n);
close(f);
end;
procedure init;
var
i:byte;
begin
for i:=1 to n do a:=a+'A';
end;
function thoadk(x:string[20]):boolean;
begin
thoadk:=(pos('BB',x)=0)=true;
end;
procedure xuat;
begin
writeln(f,a);
end;
procedure xuli(i:byte);
var
j:char;
begin
for j:='A' to 'B' do
begin
a:=j;
if (i=n)and thoadk(a) then xuat
else xuli(i+1);
end;
end;
{-----------------}
begin
assign(f,fi);rewrite(f);
inputdata;
init;
xuli(1);
close(f);
end.
[/IMGRIGHT]
em viết trên FreePascal-2.2.0 thế là nó hiện lỗi là
program
exited with
exitcode = 201
Mong anh chị giúp em tìm chỗ sai ạ.
-
12-13-2010, 12:33 AM #14
Junior Member
- Ngày tham gia
- Nov 2015
- Bài viết
- 0
a, xin lỗi ạ. Bài này em đã làm đc rồi, em sẽ post lên để các anh chị xem sau. Còn vấn đề nan giải của em chính là bài đây ạ:
Đề:Đề: Cho xâu S (độ dài không quá 10) chỉ gồm các kí tự 'A' đến 'Z' (các kí tự trong xâu S không nhất thiết phải giống nhau). Hãy liệt kê tất cả các hoán vị khác nhau của xâu S.
Ví dụ:
s='aba'
CÁc hoán vị là:
aab
aba
baa
Và lập trình như sau:
const
fi='xau.inp';
fo='xau.out';
var
f:text;
s:string[10];
a:array[1..10] of integer;
procedure inputdata;
begin
assign(f,'xau.inp');reset(f);
readln(f,s);
close(f);
end;
procedure init;
var
i:integer;
begin
for i:=1 to length(s) do a:=i;
end;
procedure xuat;
var
i:integer;
begin
for i:=1 to length(s) do write(f,b);
writeln(f);
end;
procedure xuli(i:integer);
var
j:integer;
begin
for j:=a[i-1]+1 to length(s) do
begin
s:=s[j];
if (i=length(s)) then xuat
else xuli(i+1);
end;
end;
begin
assign(f,fo);rewrite(f);
inputdata;
init;
xuli(1);
close(f);
end.Và em gặp lỗi giống như bài trên kia vậy. Mong các anh chị giúp đỡ em.
-
12-13-2010, 04:08 AM #15
Junior Member
- Ngày tham gia
- Nov 2015
- Bài viết
- 2
[IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]) sr bạn, đúng là mình không chú ý về code của mình lắm. Bạn xóa dòng if n-t>... đi là ok. Lỗi bạn mắc phải là lỗi tràn mảng, lỗi này mắc phải khi bạn động tới vị trí 0 của mảng và vì bạn chỉ khai báo mảng 1->... nên bị lỗi. Bạn sửa lại code của bạn, khai báo thêm vị trí 0 xem đúng chưa.
-
12-13-2010, 04:37 AM #16
Junior Member
- Ngày tham gia
- Nov 2015
- Bài viết
- 0
xin cảm ơn sự giúp đỡ của anh Ginta_ITFam.
-
12-13-2010, 05:02 AM #17
Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 3
Mình giúp nhưng liệu bạn đã hoàn thiện được bài của mình chưa? Nếu chưa thì mình không dám nhận lời cảm ơn đâu [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG] Bạn có thể lên google search bảng mã exit code free hoặc bảng lỗi runtime để tìm hiểu các lỗi mà trong free bạn có thể gặp phải, như thế sẽ chủ động hơn trong khi làm bài.
-
12-14-2010, 03:14 AM #18
Junior Member
- Ngày tham gia
- Nov 2015
- Bài viết
- 1
a, bài của anh Ginta_ITFam em đã hoàn thiện, cùng với giải thuật của anh binhnguyenLQD-kg em cũng bổ sung thêm rồi ạ. Còn về lỗi thì thật em chẳng nghĩ ra phải làm sao, xin cảm ơn sự giúp đỡ của anh lần nữa!
Xe nâng người Boom lift được Công Ty TNHH Trung thành phân phối chính hãng tại khu vực phía Bắc. Với chi phí đầu tư ban đầu thấp hơn rất nhiều so với các loại xe nâng dầu , xe nâng động cơ loại...
Xe nâng người được trung thành nhập khẩu giá tốt