Đến nội dung

Hình ảnh

Xâu lớn nhất


  • Please log in to reply
Chủ đề này có 12 trả lời

#1
PlanBbyFESN

PlanBbyFESN

    Thiếu úy

  • Điều hành viên OLYMPIC
  • 637 Bài viết

Bài toán: Cho trước tập tin văn bản INPUT.INP gồm nhiều dòng (không quá 1000 dòng), mỗi dòng chứa một chuỗi ký tự (gồm các chữ cái từ ‘A’ đến ‘Z’ viết dính liền với nhau), mỗi chuỗi dài không quá 255 ký tự. Trong tập tin này có duy nhất một chuỗi xuất hiện đúng một lần, các chuỗi còn lại đều xuất hiện đúng k lần. (Số k không cho trước, nhưng biết rằng k là một số chẵn và k≠0).

 

Yêu cầu:  Viết chương trình đọc tập tin INPUT.INP xử lý và tìm chuỗi duy nhất đó, ghi kết quả tìm được vào tập tin văn bản OUTPUT.OUT.

Kết quả:  Tập tin OUTPUT.OUT có một dòng là chuỗi ký tự tìm được theo yêu cầu.

Ví dụ:

 

     INPUT.INP                                                                                                                   OUTPUT.OUT                                                                                                                                                                                                          

ABCD

EFGHIJK                                                                                                                          TINHOCTRE

TINHOCTRE

ABCD

EFGHIJK


Bài viết đã được chỉnh sửa nội dung bởi PlanBbyFESN: 10-04-2016 - 10:31

:huh:


#2
trananhduong62

trananhduong62

    Hạ sĩ

  • Thành viên
  • 81 Bài viết

Bài toán: Cho trước tập tin văn bản INPUT.INP gồm nhiều dòng (không quá 1000 dòng), mỗi dòng chứa một chuỗi ký tự (gồm các chữ cái từ ‘A’ đến ‘Z’ viết dính liền với nhau), mỗi chuỗi dài không quá 255 ký tự. Trong tập tin này có duy nhất một chuỗi xuất hiện đúng một lần, các chuỗi còn lại đều xuất hiện đúng k lần. (Số k không cho trước, nhưng biết rằng k là một số chẵn và k≠0).

 

Yêu cầu:  Viết chương trình đọc tập tin INPUT.INP xử lý và tìm chuỗi duy nhất đó, ghi kết quả tìm được vào tập tin văn bản OUTPUT.OUT.

Kết quả:  Tập tin OUTPUT.OUT có một dòng là chuỗi ký tự tìm được theo yêu cầu.

Ví dụ:

INPUT.INP

OUTPUT.OUT

ABCD

EFGHIJK

TINHOCTRE

ABCD

EFGHIJK

TINHOCTRE

khó ghê :lol: :lol: :lol: :lol:


trananhduong62 :icon6:  :icon6:  :icon6:  :ukliam2: GOOD!


#3
Mystic

Mystic

    Thượng sĩ

  • Thành viên
  • 240 Bài viết

Bài toán: Cho trước tập tin văn bản INPUT.INP gồm nhiều dòng (không quá 1000 dòng), mỗi dòng chứa một chuỗi ký tự (gồm các chữ cái từ ‘A’ đến ‘Z’ viết dính liền với nhau), mỗi chuỗi dài không quá 255 ký tự. Trong tập tin này có duy nhất một chuỗi xuất hiện đúng một lần, các chuỗi còn lại đều xuất hiện đúng k lần. (Số k không cho trước, nhưng biết rằng k là một số chẵn và k≠0).

 

Yêu cầu:  Viết chương trình đọc tập tin INPUT.INP xử lý và tìm chuỗi duy nhất đó, ghi kết quả tìm được vào tập tin văn bản OUTPUT.OUT.

Kết quả:  Tập tin OUTPUT.OUT có một dòng là chuỗi ký tự tìm được theo yêu cầu.

Ví dụ:

INPUT.INP

OUTPUT.OUT

ABCD

EFGHIJK

TINHOCTRE

ABCD

EFGHIJK

TINHOCTRE

Ở đoạn ví dụ .Có vấn đề rồi bạn ,có thể nói rõ hơn đc ko ?


>>> Nếu bạn luôn buồn phiền hãy dùng hy vọng để chữa trị <<<

Và ...

>>>  Không bao giờ nói bạn đã thất bại

Cho đến khi đó là nỗi lực cuối cùng của bạn

           Và không bao giờ nói rằng:

        Đó là nỗi lực cuối cùng của bạn

         Cho tới khi bạn đã thành công  >>>

 

~ Mystic Lâm


#4
PlanBbyFESN

PlanBbyFESN

    Thiếu úy

  • Điều hành viên OLYMPIC
  • 637 Bài viết

Ở đoạn ví dụ .Có vấn đề rồi bạn ,có thể nói rõ hơn đc ko ?

 

Đã sửa!


:huh:


#5
Mystic

Mystic

    Thượng sĩ

  • Thành viên
  • 240 Bài viết


Bài toán: Cho trước tập tin văn bản INPUT.INP gồm nhiều dòng (không quá 1000 dòng), mỗi dòng chứa một chuỗi ký tự (gồm các chữ cái từ ‘A’ đến ‘Z’ viết dính liền với nhau), mỗi chuỗi dài không quá 255 ký tự. Trong tập tin này có duy nhất một chuỗi xuất hiện đúng một lần, các chuỗi còn lại đều xuất hiện đúng k lần. (Số k không cho trước, nhưng biết rằng k là một số chẵn và k≠0).

 

Yêu cầu:  Viết chương trình đọc tập tin INPUT.INP xử lý và tìm chuỗi duy nhất đó, ghi kết quả tìm được vào tập tin văn bản OUTPUT.OUT.

Kết quả:  Tập tin OUTPUT.OUT có một dòng là chuỗi ký tự tìm được theo yêu cầu.

Ví dụ:

 

     INPUT.INP                                                                                                                   OUTPUT.OUT                                                                                                                                                                                                          

ABCD

EFGHIJK                                                                                                                          TINHOCTRE

TINHOCTRE

ABCD

EFGHIJK

 

program bka;
uses crt;
var i,n,j,k,l,p:integer;
f:text;
d:array[1..1000] of integer;
a:array[1..100] of string;
s,tg:string;
begin
clrscr;
assign(f,'d:\input.inp');
reset(f);
n:=0;
while not eof(f) do
      begin
      readln(f,s);
      n:=n+1;
      a[n]:=s;
      end;
close(f);
assign(f,'d:\output.out');
rewrite(f);
for i:=1 to n do
d[i]:=1;
for i:=1 to n-1 do
begin
j:=i+1;
while j<=n do
if a[i]=a[j] then
   begin
   for k:=j to n do
   a[k]:=a[k+1];
   n:=n-1;
   d[i]:=d[i]+1;
   end else j:=j+1;
end;
for i:=1 to n-1 do
for j:=i+1 to n do
if d[i]>d[j] then
begin
tg:=a[i];
a[i]:=a[j];
a[j]:=tg;
end;
write(f,a[1]);
close(f);
readln
end.

>>> Nếu bạn luôn buồn phiền hãy dùng hy vọng để chữa trị <<<

Và ...

>>>  Không bao giờ nói bạn đã thất bại

Cho đến khi đó là nỗi lực cuối cùng của bạn

           Và không bao giờ nói rằng:

        Đó là nỗi lực cuối cùng của bạn

         Cho tới khi bạn đã thành công  >>>

 

~ Mystic Lâm


#6
hoicmvsao

hoicmvsao

    Thượng sĩ

  • Thành viên
  • 299 Bài viết

DÙng phép toán xor.

Đặc điểm của xor: x xor x=0;0^x=x;

khi đọc 1 xâu thì chuyển vào mảng rồi xor lần lượt. mảnh cuối cùng nhận được là xâu kết quả.

về xor operator thì các bạn tự tra google nhá!

https://www.google.c...or trong pascal



#7
Mystic

Mystic

    Thượng sĩ

  • Thành viên
  • 240 Bài viết

DÙng phép toán xor.

Đặc điểm của xor: x xor x=0;0^x=x;

khi đọc 1 xâu thì chuyển vào mảng rồi xor lần lượt. mảnh cuối cùng nhận được là xâu kết quả.

về xor operator thì các bạn tự tra google nhá!

https://www.google.c...or trong pascal

Đậy mình sử dụng kiến thức Tin cấp THCS thôi bạn à !!

Về những cách bạn đưa ra thì mình thấy hầu hết là của cấp III :(

Ở đây mình ko phải là chê cách của bạn mà là theo mình càng đơn giản càng tốt :))


>>> Nếu bạn luôn buồn phiền hãy dùng hy vọng để chữa trị <<<

Và ...

>>>  Không bao giờ nói bạn đã thất bại

Cho đến khi đó là nỗi lực cuối cùng của bạn

           Và không bao giờ nói rằng:

        Đó là nỗi lực cuối cùng của bạn

         Cho tới khi bạn đã thành công  >>>

 

~ Mystic Lâm


#8
hoicmvsao

hoicmvsao

    Thượng sĩ

  • Thành viên
  • 299 Bài viết

à. tin học không chia theo cấp đâu bạn ạ, học được càng nhiều càng tốt thôi. với lại mấy cái này là THCS cả đó. cấp 3 là học về Graph,hàm SP, Cấu trúc dữ liệu đặc biệt như BinarySearchTree hay Suffix Aray, Interval Tree chứ có học lại đâu !



#9
PlanBbyFESN

PlanBbyFESN

    Thiếu úy

  • Điều hành viên OLYMPIC
  • 637 Bài viết

 

 

Sửa lại chương trình không ghép tệp được không. Để dễ test. Bài ghép tệp của bạn chạy không được!


:huh:


#10
Zx NTL xZ

Zx NTL xZ

    Binh nhất

  • Thành viên mới
  • 24 Bài viết


Sửa lại chương trình không ghép tệp được không. Để dễ test. Bài ghép tệp của bạn chạy không được!

program bka;
uses crt;
var i,n,j,k,l,p:integer;
d:array[1..1000] of integer;
a:array[1..100] of string;
s,tg:string;
begin
clrscr;
write('Nhap so xau:');readln(n);
for i:=1 to n do
begin
write('a[',i,']=');readln(a[i]);
end;
for i:=1 to n do
d[i]:=1;
for i:=1 to n-1 do
begin
j:=i+1;
while j<=n do
if a[i]=a[j] then
   begin
   for k:=j to n do
   a[k]:=a[k+1];
   n:=n-1;
   d[i]:=d[i]+1;
   end else j:=j+1;
end;
for i:=1 to n-1 do
for j:=i+1 to n do
if d[i]>d[j] then
begin
tg:=a[i];
a[i]:=a[j];
a[j]:=tg;
end;
writeln('Chuoi ky tu dai nhat la:',a[1]);
readln
end.
*Lưu ý:Nên chạy bằng Tubor Pascal !
P/s:Xin lỗi chú Lâm vì anh đã ăn cắp bản quyền  :closedeyes:

... Cuộc sống làm ta gục ngã ...

             Nhưng ! ... ta có thể lựa chọn đứng dậy hay là không


#11
Duongdz2k7

Duongdz2k7

    Binh nhất

  • Thành viên mới
  • 25 Bài viết


 

program bka;
uses crt;
var i,n,j,k,l,p:integer;
d:array[1..1000] of integer;
a:array[1..100] of string;
s,tg:string;
begin
clrscr;
write('Nhap so xau:');readln(n);
for i:=1 to n do
begin
write('a[',i,']=');readln(a[i]);
end;
for i:=1 to n do
d[i]:=1;
for i:=1 to n-1 do
begin
j:=i+1;
while j<=n do
if a[i]=a[j] then
   begin
   for k:=j to n do
   a[k]:=a[k+1];
   n:=n-1;
   d[i]:=d[i]+1;
   end else j:=j+1;
end;
for i:=1 to n-1 do
for j:=i+1 to n do
if d[i]>d[j] then
begin
tg:=a[i];
a[i]:=a[j];
a[j]:=tg;
end;
writeln('Chuoi ky tu dai nhat la:',a[1]);
readln
end.
*Lưu ý:Nên chạy bằng Tubor Pascal !
P/s:Xin lỗi chú Lâm vì anh đã ăn cắp bản quyền  :closedeyes:

 

Bài này làm kiểu mảng xâu dễ mà , sao bạn làm khó hiểu thế  :closedeyes:

Đây là code của mk  :D

program bt1;
uses crt;
var a:array[1..10000] of string;
d,i,n,j:integer;
begin
clrscr;
write('nhap vao so luong xau:');
readln(n);
for i:=1 to n do
begin
write('nhap xau thu ',i,' :');
readln(a[i]);
end;
for i:=1 to n do
begin
d:=0;
for j:=1 to n do
if a[i]=a[j] then
d:=d+1;
if d=1 then
writeln(a[i]);
end;
readln;
end. :like

                   Học , học nữa , học mãi  :closedeyes:

Luôn không ngừng cố gắng để đạt thành quả :D  :like


#12
Lykan 11

Lykan 11

    Binh nhì

  • Thành viên mới
  • 17 Bài viết


 

Bài này làm kiểu mảng xâu dễ mà , sao bạn làm khó hiểu thế  :closedeyes:

Đây là code của mk  :D

program bt1;
uses crt;
var a:array[1..10000] of string;
d,i,n,j:integer;
begin
clrscr;
write('nhap vao so luong xau:');
readln(n);
for i:=1 to n do
begin
write('nhap xau thu ',i,' :');
readln(a[i]);
end;
for i:=1 to n do
begin
d:=0;
for j:=1 to n do
if a[i]=a[j] then
d:=d+1;
if d=1 then
writeln(a[i]);
end;
readln;
end. :like

 

tiếp tục bài này cx xử lí đầu vào tiết kiệm a 

pp này là tối ưu :

program bt1;
uses crt;
var a:array[1..501] of string;
s:string;
b:boolean;
d,i,n,j,r:integer;
begin
clrscr;
write('nhap vao so luong xau:');
readln(n);
for i:=1 to n div 2 +1  do a[i]:='*';
d:=0;
for r:=1 to n do
begin
 write('nhap xau thu ',r,' :');
 readln(s);
 b:=false;
 for i:=1 to d do if a[i]=s then begin b:=true; j:=i; end;
 if b=false then begin d:=d+1; a[d]:=s end else begin a[j]:=a[d]; a[d]:='*'; d:=d-1; end;
end;
write(a[1]);
readln;
end. 
>> nó rất sát đề , vì dòng sai xuất hiện số lần chẵn 


#13
Duongdz2k7

Duongdz2k7

    Binh nhất

  • Thành viên mới
  • 25 Bài viết


 

tiếp tục bài này cx xử lí đầu vào tiết kiệm a 

pp này là tối ưu :

program bt1;
uses crt;
var a:array[1..501] of string;
s:string;
b:boolean;
d,i,n,j,r:integer;
begin
clrscr;
write('nhap vao so luong xau:');
readln(n);
for i:=1 to n div 2 +1  do a[i]:='*';
d:=0;
for r:=1 to n do
begin
 write('nhap xau thu ',r,' :');
 readln(s);
 b:=false;
 for i:=1 to d do if a[i]=s then begin b:=true; j:=i; end;
 if b=false then begin d:=d+1; a[d]:=s end else begin a[j]:=a[d]; a[d]:='*'; d:=d-1; end;
end;
write(a[1]);
readln;
end. 
>> nó rất sát đề , vì dòng sai xuất hiện số lần chẵn 

 

uk! Mk quên ko đọc chú thích :D


                   Học , học nữa , học mãi  :closedeyes:

Luôn không ngừng cố gắng để đạt thành quả :D  :like





1 người đang xem chủ đề

0 thành viên, 1 khách, 0 thành viên ẩn danh