program HSGKhH_Bai1_2010;
type
arr =
Array[1..100000] of double;
var
N:longint;
a:arr;
i:integer;
isTang,isGiam:boolean;
x:double;
begin
write('N=');
readln(N);
isTang:=true;
isGiam:=true;
for i:=1 to N
do
begin
write('a[',i,']=');
readln(a[i]);
if(i=1)
then
begin
x := a[i];
continue;
end;
if(isTang) then
begin
if(x>a[i]) then
isTang:=false
else
x:=a[i];
end;
if(isGiam) then
begin
if(x<a[i]) then
isGiam:=false
else
x:=a[i];
end;
end;
if(isTang) then
write('day
tang')
else
if(isGiam)
then
write('day giam')
else
write('khong tang khong giam');
readln;
end.
Bài 2:
program HSGKhH_Bai2_2010;
type
arr = array[1..100000] of double;
var
N,K,dem,i:integer;
x:double;
isok:boolean;
a:arr;
begin
dem:=0;
isok := false;
write('N=');readln(N);
for i:=1 to N do
begin
write('a[',i,']=');
readln(a[i]);
end;
write('K=');readln(K);
for i:=1 to N do
begin
if(a[i]>0) then inc(dem);
if(a[i]<0) then
begin
if(dem=K) then
begin
isok := true;
break;
end;
dem :=0;
end;
end;
if isok then
write('co')
else
write('khong');
readln;
end.
Bài 3: nhận xét rất đơn giản,
Bài 2:
program HSGKhH_Bai2_2010;
type
arr = array[1..100000] of double;
var
N,K,dem,i:integer;
x:double;
isok:boolean;
a:arr;
begin
dem:=0;
isok := false;
write('N=');readln(N);
for i:=1 to N do
begin
write('a[',i,']=');
readln(a[i]);
end;
write('K=');readln(K);
for i:=1 to N do
begin
if(a[i]>0) then inc(dem);
if(a[i]<0) then
begin
if(dem=K) then
begin
isok := true;
break;
end;
dem :=0;
end;
end;
if isok then
write('co')
else
write('khong');
readln;
end.
Bài 3: nhận xét rất đơn giản,
- dòng và cột đều lẻ điền số 1, dòng và cột đều lẻ điền số -1, còn lại là số 0.
- nếu là ma trận vuông thì tổng giá trị luôn là 0.
solution (free pascal):
program HSGKhH_Bai3_2010;
var
N,i,j:longint;
a:array[1..201,1..201]of longint;
begin
write('N='); readln(N);
fillchar(a,sizeof(a),0);
for i:=1 to N do
for j:=1 to N do
if(odd(i) and odd(j)) then
a[i,j]:=1
else if(not odd(i) and not odd(j)) then
a[i,j]:=-1;
for i:=1 to N do
begin
for j:=1 to N do write(a[i,j],' ');
writeln;
end;
readln;
end.
Bài 4:
Solution bằng ngôn ngữ C++ cài trên IDE DevC:
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
string s;
int f[256];
int trace[256];
bool IsPalin(int jj,int ii);
int main()
{
freopen("TEST.INP","r",stdin);
freopen("TEST.OUT","w",stdout);
cin >> s;
//swap
char c;
for(int i=0,j=s.size()-1; i<j;)
{
c=s[i];
s[i]=s[j];
s[j]=c;
i++,j--;
}
//cout << s;
f[0]=1;
for(int i=1; i<s.size(); i++)
{
f[i]=i+1;
trace[i]=i;
for(int j=0;j<=i;j++)
if(IsPalin(j,i))
{
if(j==0)
{
f[i]=1;
trace[i]=0;
continue;
}
if(f[i]>f[j-1]+1)
{
f[i] = f[j-1]+1;
trace[i]=j;
}
}
}
cout << f[s.size()-1] << endl;
for(int i=s.size()-1; i>=0;)
{
for(int j=trace[i];j<=i;j++)
cout << s[j];
cout << endl;
i = trace[i]-1;
}
return 0;
}
bool IsPalin(int jj,int ii)
{
int jjj=jj,iii=ii;
while(jjj<iii)
{
if(s[jjj]!=s[iii]) return false;
jjj++;
iii--;
}
return true;
}
Bài 4:
Solution bằng ngôn ngữ C++ cài trên IDE DevC:
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
string s;
int f[256];
int trace[256];
bool IsPalin(int jj,int ii);
int main()
{
freopen("TEST.INP","r",stdin);
freopen("TEST.OUT","w",stdout);
cin >> s;
//swap
char c;
for(int i=0,j=s.size()-1; i<j;)
{
c=s[i];
s[i]=s[j];
s[j]=c;
i++,j--;
}
//cout << s;
f[0]=1;
for(int i=1; i<s.size(); i++)
{
f[i]=i+1;
trace[i]=i;
for(int j=0;j<=i;j++)
if(IsPalin(j,i))
{
if(j==0)
{
f[i]=1;
trace[i]=0;
continue;
}
if(f[i]>f[j-1]+1)
{
f[i] = f[j-1]+1;
trace[i]=j;
}
}
}
cout << f[s.size()-1] << endl;
for(int i=s.size()-1; i>=0;)
{
for(int j=trace[i];j<=i;j++)
cout << s[j];
cout << endl;
i = trace[i]-1;
}
return 0;
}
bool IsPalin(int jj,int ii)
{
int jjj=jj,iii=ii;
while(jjj<iii)
{
if(s[jjj]!=s[iii]) return false;
jjj++;
iii--;
}
return true;
}