Nguồn đề bài: http://www.spoj.com/PTIT/problems/BCACM11G/
1. Đề bài BCACM11G spoj
Cho dãy gồm N số phân biệt AN = {a1, a2, .., aN } và số tự nhiên K (K<=N<=100). Ta gọi một dãy con tăng dần bậc K của dãy số AN là một dãy các số gồm K phần tử trong dãy đó thỏa mãn tính chất tăng dần. Bài toán được đặt ra là hãy tìm số cácdãy con tăng dần bậc K của dãy số AN.
Input
Dòng đầu tiên ghi số bộ test, không lớn hơn 100. Mỗi bộ test được xây dựng theo khuôn dạng sau:
- Dòng đầu tiên ghi lại hai số N và K tương ứng với số phần tử của dãy số và bậc của dãy con.
- Dòng kế tiếp ghi lại N số của dãy số AN, các số trong dãy không lớn hơn 100.
Output
Với mỗi bộ test, in ra màn hình số các dãy con tăng dần tự nhiên bậc K của dãy số AN.
Example
Input:
2
5 3
2 5 15 10 20
5 3
2 20 10 15 5
Output:
7
1
2. Gợi ý bài BCACM11G spoj PTIT – Dãy con tăng dần tự nhiên bậc K
– Quay lui chọn k số theo thứ tự, sau đó duyệt kiểm tra k số số có tạo dãy con tăng hay không
3. Code BCACM11G spoj PTIT – Dãy con tăng dần tự nhiên bậc K
const fi='';
nmax=140;
type data=longint;
var
f:text;
A,B,luu:array[0..nmax+1] of data;
n,test,k,sl,res:data;
function check:data;
var i,j:data;
begin
for i:=2 to sl do
if A[luu[i-1]]>a[luu[i]] then
exit(0);
exit(1);
end;
procedure try(i:data); //da chon so co vi tri i
var j:data;
begin
if sl=k then
begin
res:=res+check;
exit;
end;
for j:=i+1 to n do
begin
inc(sl);
luu[sl]:=j;
try(j);
dec(sl);
end;
end;
procedure xuli;
var i,j:data;
begin
sl:=0;
res:=0;
try(0);
writeln(res);
end;
procedure docfile;
var i,j:data;
begin
assign(f,fi); reset(f);
readln(f,test);
for i:=1 to test do
begin
read(f,n,k);
for j:=1 to n do
read(f,a[j]);
xuli;
end;
close(f);
end;
begin
docfile;
end.
Bài này giải sai rồi!
sai ở chỗ nào ạ?