求助-PASCAL题目10道

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求助-PASCAL题目10道相关的知识,希望对你有一定的参考价值。

1)20级台阶,每次走1阶或两阶,求共有多少种走法。
2)蛇形矩阵:N=5
1 2 6 7 15
3 5 8 14 16
4 9 13 17 22
10 12 18 21 23
11 19 29 24 25
3)统计某班50个人的成绩。包括学好、姓名、语文、数学、英语、总分、平均分、名次。
4)J例子问题(太长了,网上应该有,NOIP也有)
5)多项式求和。一元多项式加法:实现两个整形数一元多项式的加法。如:有多项式50+4*3-4*4+1与多项式50*2+4X+0*3,结果为5*6-7*4+4*3+50*2+4x+1
6)将N个红球和M个黄球排成一行。例如N=3,M=2可得到以下6种派发:红红黄黄 红黄红黄 红黄黄红 黄红红黄 黄红红黄 黄黄红红。问题:当n=4 m=3
时有多少种不同排法?
7)在书架上放有1,2,---n的n本书。现将N本书全部取下然后再放回去,当放回去时要求每本书都不能放在原来的位置上。N=4时有几种放法?
8)设有一棵K叉树,其中只有度为0和k两种节点,设N0,NK分别表示度为0和度为K的结点个数,试求出n0,nk之间的关系。
9)无限图G有16条边,有3个4度定点、4个3度定点,其余顶点的度均小于3,则G至少有()个定点。

1)20级台阶,每次走1阶或两阶,求共有多少种走法。答案:
program taijie;
var i:integer;
a:array[1..20] of integer;
begin
a[1]:=1;a[2]:=2;
for i:=3 to 20 do
a[i]:=a[i-1]+a[i-2];
writeln(a[i]);
end.
2)蛇形矩阵 答案:
program l;
var a:array [1..20,1..20] of integer;
i,j,s,n:integer;
begin
readln(n);
s:=1;
for i:=1-n to n-1 do
if i<=0 then
begin
if (i+n) mod 2 = 1then
for j:=1 to i+n do
begin
a[i+n-j+1,j]:=s;
s:=s+1;
end
else
for j:=1 to i+n do
begin
a[j,i+n-j+1]:=s;
s:=s+1;
end;
end
else
begin
if (i+n) mod 2 = 1 then
for j:=1 to n-i do
begin
a[n+1-j,j+i]:=s;
s:=s+1;
end
else
for j:=1 to n-i do
begin
a[j+i,n+1-j]:=s;
s:=s+1;
end;
end;

for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j]:3);
writeln;
end;
end.
输入‘5’。

5)多项式求和。答案:
program ttt;
var a,b:string;
s,i,j,k,n,q,code:integer;
w:char;
begin
readln(a);
j:=length(a);
i:=0;
while i<=j do
begin
inc(i,1);
if a[i]=' ' then begin
delete(a,i,1);
inc(i,-1)
end;
if (a[i]>='a')and(a[i]<='z') then
w:=a[i];
j:=length(a);
end;
j:=length(a);
k:=pos('=',a);
if ((a[k+1]>='0')and(a[k+1]<='9'))or((a[k+1]>='a')and(a[k+1]<='z'))
then a[k]:='+'
else delete(a,k,1);
for i:=k to j do
begin
if a[i]='-' then
a[i]:='+'
else
if a[i]='+' then
a[i]:='-';
end;
j:=length(a);
i:=1;
while i<=j do
begin
if a[i]=w then begin
if (i=1) then begin a:=concat('+',a);inc(i,1) end;
if (a[i-1]='+')or(a[i-1]='-')
then begin insert('1',a,i);inc(i,1) end;
end;
inc(i,1);
end;
k:=1;s:=0;
if (a[1]<>'+')and(a[1]<>'-') then insert('+',a,1);
i:=1;
j:=length(a);
j:=j+1;
a:=concat(a,'+');
while i<=j do
begin
if (a[i]='+')or(a[i]='-') then
begin
val(copy(a,k,i-k),n,code);
inc(s,n);
k:=i
end;
if ((a[i]>='a')and(a[i]<='z'))
then begin
b:=concat(b,copy(a,k,i-k));
delete(a,k,i-k+1);
i:=k-1;
end;
inc(i,1);
j:=length(a);
end;
k:=1;q:=0;
j:=length(b);
j:=j+1;
b:=concat(b,'+');
for i:=1 to j do
begin
if (b[i]='+')or(b[i]='-') then
begin
val(copy(b,k,i-k),n,code);
inc(q,n);
k:=i
end
end;
writeln(w,' = ',(-s)/q:0:3);
end.

9)G min=11.
参考技术A 1:
function run(n:integer):longint;
begin
if n=0 then exit(0);
if n=1 then run:=1
else if n=2 then run:=2
else run:=run(n-1)+run(n-2);
end;
begin
writeln(run(20));
end.
8:
n0-nk=k-1
参考技术B 1)11种
2)没看懂
3)亦没看懂
4)??
5)

求助大神们看下这道算法题

时间限制: 1.0s
内存限制: 256.0MB
问题描述:
问题描述
  我们把一个数称为有趣的,当且仅当:
  1. 它的数字只包含0, 1, 2, 3,且这四个数字都出现过至少一次。
  2. 所有的0都出现在所有的1之前,而所有的2都出现在所有的3之前。
  3. 最高位数字不为0。
  因此,符合我们定义的最小的有趣的数是2013。除此以外,4位的有趣的数还有两个:2031和2301。
  请计算恰好有n位的有趣的数的个数。由于答案可能非常大,只需要输出答案除以1000000007的余数。
输入格式
  输入只有一行,包括恰好一个正整数n (4 ≤ n ≤ 1000)。
输出格式
  输出只有一行,包括恰好n 位的整数中有趣的数的个数除以1000000007的余数。
样例输入
4
样例输出
3
 附上我自己的代码,我的想法是根据排列组合:
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n = 0;
		long sum = 0, temp = 1;
		n = in.nextInt();
		for (int i = 1; i <= n - 1; i++)
			for (int j = 1; j <= n - 1 - i; j++)
				for (int m = 1; m <= n - 1 - i - j; m++) {
					temp = 1;
					for (int a = n - 1; a >= n - i - j; a--) {
						temp = temp * a;
					}
					for (int a = i + j; a >= 1; a--) {
						temp = temp / a;
					}
					sum = (sum + temp);
				}
		System.out.println(sum % 1000000007);
	}

}

但是Long型不够用了,计算20多位以上时答案就会错误!请各路大神给参谋参谋指点指点更有效多方法。本人觉得自己的算法在运行时间要求上还是没有达到要求。不胜感激!!!

 

以上是关于求助-PASCAL题目10道的主要内容,如果未能解决你的问题,请参考以下文章

pascal题目

Noip提高组pascal题目

C语言基础题目,求助!

随机生成 10道四则运算题目 累计得分 输出文件

pascal决赛求助!!高手快进...

11.2 morning