PDA

View Full Version : Cac bạn tham gia giải



lehang_gb1
04-12-2009, 16:09
Câu 2. Viết chương trình nhập vào 1 xâu S chỉ gồm các chữ cái thường. Hãy lập xâu S1 nhận được từ xâu S bằng cách sắp xếp lại các kí tự theo vần a, b, c...

Câu 3. Hãy viết chương trình nhập từ bàn phím 2 số nguyên dương M,N. Hãy tìm cách thay các dấu ? trong biểu thức sau bởi các phép toán +, -, sao cho giá trị nhận được của biểu thức nhận được bằng N. (M?M)?M=N. Nếu không thay được thì thông báo không có phép toán nào".

Câu 4. Dữ liệu vào được cho bời file INP.BL trong đó dòng đầu là 2 số nguyên dương M,N (M,N<10) được viết cách nhau bởi dấu cách. M dòng tiếp theo mỗi dòng có N số nguyên dương <200 được viết cách nhau bởi dấu cách.
Kết quả được ghi ra file OUT.BL như sau: M số được viết cách nhau bởi dấu cách mà mỗi số là giá trị lớn nhất của mỗi dòng trong mảng hai chiều (MxN) ở file INP.BL

bumzunpilo
04-12-2009, 22:02
Câu 2. Viết chương trình nhập vào 1 xâu S chỉ gồm các chữ cái thường. Hãy lập xâu S1 nhận được từ xâu S bằng cách sắp xếp lại các kí tự theo vần a, b, c...

Câu 3. Hãy viết chương trình nhập từ bàn phím 2 số nguyên dương M,N. Hãy tìm cách thay các dấu ? trong biểu thức sau bởi các phép toán +, -, sao cho giá trị nhận được của biểu thức nhận được bằng N. (M?M)?M=N. Nếu không thay được thì thông báo không có phép toán nào".

Câu 4. Dữ liệu vào được cho bời file INP.BL trong đó dòng đầu là 2 số nguyên dương M,N (M,N<10) được viết cách nhau bởi dấu cách. M dòng tiếp theo mỗi dòng có N số nguyên dương <200 được viết cách nhau bởi dấu cách.
Kết quả được ghi ra file OUT.BL như sau: M số được viết cách nhau bởi dấu cách mà mỗi số là giá trị lớn nhất của mỗi dòng trong mảng hai chiều (MxN) ở file INP.BL


bài 2, tôi nghĩ chỉ cần đơn giản sắp xếp các số thứ tự các chữ cái trong bảng mã ASCII là được. Ví dụ thuật toán Quicksort, tôi cứ viết ra, bạn nào bik rồi thì cứ coi như không có nhá:D

procedure Qsort(l,h:integer);
var
pivot:integer;
i,j:integer;
begin
if l>=h then exit;
pivot:=a[l];
j:=h;
repeat
while (a[j]>pivot) and (i<j) do dec(j);
if i<j then
begin
a[i]:=a[j];
inc(i);
end;
while (a[i]<pivot) and (i<j) do inc(i);
if i<j then
begin
a[j]:=a[i]; dec(j);
end;
until i=j;
a[i]:=pivot;
qsort(l,i-1); qsort(i+1,h);
end;

Bài 3,
nếu biểu thức đúng là (M?M)?M=N, mà dấu ? chỉ có thể thay bởi dấu + hoặc - như bạn nói thì bài toán có phải quá đơn giản không, bạn xem lại đề nhá.

Bài 4,

begin
assign(f,'inp.bl');reset(f);
assign(f2,'out.bl');rewrite(f2);
readln(f,m,n);
for i:=1 to m do
for j:=1 to n do
begin
read(a[j]);
write(f2,max_a[j],' ');
end;
end.

linhhahaduc
07-12-2009, 13:37
Mình thử sửa câu 2 thành :
cho 1 dãy N số hạng .
Hãy thêm các toán tử + - * / ( ) vào giữa các số để đc thành 1 biểu thức có giá trị T .
Đếm số cách thêm .
Không tính biểu thức trùng
VD : 2+4*2 và 2+(4*2) chỉ đc tính là 1 cách
( N <= 8 )