pascal求解,并说说各题原理.卡片重排可可共有两种卡片,一种卡片是数字0~9编号,一种卡片是字母A~Z编号,现在两种卡片混在一起,可可想将它们归类摆放,但是要求同类卡片中,它们相对位置不可
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/27 23:10:56
pascal求解,并说说各题原理.卡片重排可可共有两种卡片,一种卡片是数字0~9编号,一种卡片是字母A~Z编号,现在两种卡片混在一起,可可想将它们归类摆放,但是要求同类卡片中,它们相对位置不可
pascal求解,并说说各题原理.
卡片重排
可可共有两种卡片,一种卡片是数字0~9编号,一种卡片是字母A~Z编号,现在两种卡片混在一起,可可想将它们归类摆放,但是要求同类卡片中,它们相对位置不可以改变,原先在前的仍然在前,具体规则还可参考样例理解.
输入格式
一行,若干数字及字母,中间无空格.
输出格式
一行,字母在前编号,数字在后,中间无空格.
输入样例
123AB321
输出样例
AB123321
数据范围
卡片张数不超过255
卡片求和
可可与小伙伴们玩一种卡片游戏,卡片在桌子上一字排开,共有n张,卡片上都有编号,游戏要求以最快速度,找出相邻的k张卡片,使其编号之和最大.
输入格式
两行.
第1行,2个正整数n和k.
第2行,n个正整数,表示各卡片的编号.
输出格式
1个正整数,表示最大的相邻的k张编号和.
输入样例
20 4
5 20 1 18 4 16 6 10 15 2 17 3 14 7 13 8 11 19 9 12
输出样例
51
数据范围
K<n<=1000
卡片整理
可可手头有很多游戏卡片,卡片上都有编号,这些卡片有些是重复的,他想将重复的卡片只留一张,其余的都处理掉,并且将剩下的卡片按编号从小到大排好,当然他还想知道剩下来的卡片数量.
输入格式
两行.
第1行,1个正整数n.
第2行,n个正整数ai,两数之间有一个空格隔开,表示卡片的编号.
输出格式
两行.
第1行,剩余卡片从小到大排列的卡片编号.
第1行,1个正整数,表示去掉重复卡片之后剩余编号各不相同的卡片数量.
输入样例
8
8 5 5 1 6 7 6 8
输出样例
5
1 5 6 7 8
数据范围
n<=2000000,ai<=1000
卡片覆盖
可可与小伙伴玩一种卡片覆盖游戏.地面上有2×n的长方形区域,现在需要用2×1的卡片覆盖,他们想知道有多少种覆盖的方案.比如n=3时,共有3种覆盖方案.
输入格式
一个整数n.
输出格式
一个整数,表示覆盖长方形区域的方案数.
输入样例
3
输出样例
3
数据范围
1<=N<=1000
pascal求解,并说说各题原理.卡片重排可可共有两种卡片,一种卡片是数字0~9编号,一种卡片是字母A~Z编号,现在两种卡片混在一起,可可想将它们归类摆放,但是要求同类卡片中,它们相对位置不可
//P1
var sa,s1,st:string;
i:integer;
begin
readln(st);//读入全部卡牌
for i:=1 to length(st) do//从头扫描
begin
if (ord(st[i])>=ord('0')) and (ord(st[i])<=ord('9')) then//是数字
insert(st[i],s1,length(s1)+1)//加入数字堆中
else
insert(st[i],sa,length(sa)+1);//加入字母堆中
end;
write(sa);
write(s1);
end.//P2
var ar:array[1..1010]of longint;
ans,n,i,k,tmp:longint;
begin
read(n,k);
for i:=1 to n do read(ar[i]);
tmp:=0;
for i:=1 to k do tmp:=tmp+ar[i];//算出a[1]+a[2]+...+a[k]
ans:=tmp;
for i:=k+1 to n do//枚举所有的长度为k的段,以i为结尾
begin
tmp:=tmp-ar[i-k]+ar[i];//算出这一段的和
if tmp>ans then ans:=tmp;//更新答案
end;
writeln(ans);
end.
//p3
var a:array[0..1010]of longint;
n,i,t:longint;
begin
read(n);
fillchar(a,sizeof(a),0);
for i:=1 to n do
begin
read(t);
inc(a[t]);
end;//这个.不好说啊.名字叫计数排序.
t:=0;
for i:=0 to 1000 do
if a[i]<>0 then inc(t);
writeln(t);
for i:=0 to 1000 do
if a[i]<>0 then write(i,' ');
end.//P4
//题目要求的是第n+1个斐波那契数f[n+1]:f[1]=1,f[2]=1,f[n]=f[n-1]+f[n-2]
//证明:n=1:1种:-
//n=2:2种:||或_
// -
//如果第n行放一个|那么必须放2个|(||),然后第n-1行什么都不能放
//前n-2行可以随便放,有f[n-2]种方案
//如果放一个-,那么就不能放别的了,前n-1行可以随便放,有f[n-1]种方案
//综上所述:f[n]=f[n-1]+f[n-2]
//这个程序只能求到第90个左右,再多就要写高精度或者用python写
var a1,a2,a3,t:qword;
n,i:integer;
begin
read(n);
a1:=0;a2:=0;a3:=1;
for i:=1 to n do
begin
t:=a1;a1:=a2;a2:=a3;a3:=a1+a2;
end;
write(a3);
end.
//p4:python
a=1b=0
c=0
d=input()
shit=0
while shit<=d:
c=b
b=b+a
a=c
shit=shit+1
print b