Bài tập tìm max - Bài Tập Pascal Tổng Hợp

Bài tập tìm max

Bài1. Xâu đối xứng(2010).

Xâu đối xứng là xâu đọc giống nhau nếu ta đọc từ trái qua phải hoặc từ phải qua trái.
Ví dụ: xâu RADAR là xâu đối xứng.
Kiểm tra xem một xâu có phải là xâu đối xứng hay không, nếu đối xứng thì thông báo 1, nếu không đối xứng thì thông báo là 0.
Dữ liệu: Vào từ file văn bản bai2.inp gồm:
Dòng đầu tiên nghi một số nguyên n.
N dòng tiếp theo mỗi dòng ghi các xâu cần kiểm tra
Kết quả: Ghi ra file văn bản bai2.out: Gồm n dòng, mỗi dòng ghi 0 nếu xâu tương ứng không đối xứng hoặc ghi 1 nếu xâu tương ứng đối xứng.
Giới hạn: 0 < n < 30000; Các xâu có độ dài không quá 255 kí tự
Ví dụ:
Bai2.inp Bai2.out
3 1
AHFA 0
ACDDB 0
ACRTT 0
Chuong trinh:
var f1, f2: text;
n,i : word;
S: string;
Function kt(s: string): boolean;
var
i,k : longint;
x: boolean;
begin
x := true;
i := 1;
k := length(s);
while (i <= t div 2 ) and x do
begin
if s[i] <> s[t-i+1] then x := false;
i := t + 1;
end;
kt := x;
end;

Begin
assign(f1,'xdx.txt'); reset(f1);
assign(f2,'xdx.out'); rewrite(f2);

readln(f1,n);
for i := 1 to n do
begin
readln(f1,S);
if kt(S) then writeln(f2,1) else writeln(f2,0);
end;
close(f1); close(f2);
End.


Bài 2. Xâu Palindrome

Một xâu kí tự được gọi là xâu Palindrome ( đối xứng ) nếu ta đọc từ trái sang phải hay đọc từ phải sang trái đều giống nhau.
Yêu cầu: Cho trước một xâu kí tự S. Hãy xác định số xâu đối xứng là xâu con của nó. Một kí tự cũng được coi là một xâu đối xứng. Xâu con của S là xâu gồm một số kí tự lien tiếp trong S.
Dữ liệu vào: Từ tệp văn bản BAI2.INP:
  • Dòng thứ nhất ghi số nguyên dương N (N<100).
  • N dòng tiếp theo mỗi dòng là một xâu kí tự ( độ dài xâu <255).
Kết quả: Ghi vào tệp văn bản BAI2.OUT gồm:
  • N dòng, mỗi dòng chứa một số nguyên biểu thị số xâu con đối xứng.
BAI2.INP
BAI2.OUT
1
IOI
4




var f1, f2: text;
n,i,j,a,k : longint;
dem : longint;
s: string;
Function kt(s: string): boolean;
var
i,k : longint;
x: boolean;
begin
x := true;
i := 1; k := length(s);
while (i <= k div 2 ) and x do
begin
if s[i] <> s[k-i+1] then x := false;
i := k + 1;
end;
kt := x;
end;

Begin
assign(f1,'xdx.txt'); reset(f1);
assign(f2,'xdx.out'); rewrite(f2);

readln(f1,n);
for i := 1 to n do
begin
readln(f1,s);
a:= length(s); dem := 0;
for k := 1 to a do
for j := 1 to a-k+ 1 do
if kt(copy(s,j,k)) then dem := dem + 1;
writeln(f2,dem);
end;
close(f1); close(f2);
End.


Bài tập tìm max

Bài 1. Tổng của dãy số. (Năm 12-13)
Cho dãy a1,a2,… ,aN số tự nhiên. Hãy tính tổng các số của dãy, cho biết số hạng lớn nhất trong dãy và vị trí của số hạng này.
Dữ liệu vào: Từ tệp văn bản BAI1.INP chỉ một dòng chứa các số a1,a2, … ,aN ghi cách nhau một dấu cách. ( 0< N <=10000; 0<= ai <= 60000 với i=1,2, … ,N).
Kết quả: Ghi vào tệp văn bản BAI1.OUT có cấu trúc như sau:
  • Dòng thứ nhất ghi tổng các số của dãy.
  • Dòng thứ 2 ghi số lớn nhất.
  • Dòng thứ 3 ghi các vị trí xuất hiện của số lớn nhất. Các số trên cùng một dòng ghi cách nhau một dấu cách.
BAI1.INP
BAI1.OUT
4 3 2 1 0 8 7 4 2 5 4 6 7 8 2 3 1
67
8
6 14



uses crt;
var s,n,i,j:longint;
a:array[1..10000] of longint;
max,chiso:longint;
f1,f2:text;
BEGIN
assign(f1,'timmax.inp');reset(f1);
assign(f2,'timmax.out');rewrite(f2);
i:=1;s:=0;
while not eof(f1) do
begin
read(f1,a[i]);
s:=s+a[i];
inc(i);
end;
max:=a[1];
for j:=2 to i do
if a[j] > max then max:=a[j];
writeln(f2,s);
writeln(f2,max);
for j:=1 to i do if a[j]=max then write(f2,j,' ');
close(f1);close(f2);
END.
Bài 2: (7 điểm) Tìm số lớn
Cho một dãy gồm N các ký tự có mặt trên bàn phím trong đó có ít nhất 4 chữ số. (N< 106).
Yêu cầu: Hãy loại bỏ một số ký tự khỏi dãy sao cho 4 ký tự cuối cùng còn lại theo đúng thứ tự đó tạo nên 1 số lớn nhất.
Dữ liệu vào: File văn bản chứa BAI2.INP chứa N ký tự.
Dữ liệu ra: File văn bản BAI2.OUT chứa 4 chữ số tạo thành số lớn nhất.
Ví dụ:
BAI2.INP
BAI2.OUT
24t5j4r05f704y652k393 7693

Chuong trinh:
var
f1,f2: text;
i, k,j,n : longint;
a: array[1..1000000] of char;
ch,max: char;

begin
assign(f1,'timmax.txt'); reset(f1);
assign(f2,'timmax.out'); rewrite(f2);
i:= 1;
while not eof(f1) do
begin
read(f1,ch);
if (ch >= '0') and ( ch <= '9') then
begin a[i] := ch ;
i := i + 1;
end;
end;
n := i - 1;

k := 1;
for i:= 1 to 4 do
begin
max := a[k];
for j := k+ 1 to n -4 + i do
if a[j] > max then
begin
max := a[j];
k := j;
end;
write(f2,max);
k := k + 1;
end;
close(f1); close(f2);

End.
Previous
Next Post »