pascal题目
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pascal题目相关的知识,希望对你有一定的参考价值。
type num=array[0..400]of integer;function jia(a,b:num):num;
var c:num;
i,j,k,l:integer;
begin
fillchar(c,sizeof(c),0);
if a[0]>b[0] then l:=a[0] else l:=b[0];
k:=0;
for i:=1 to l do
begin
c[i]:=a[i]+b[i];
k:=c[i] div 10;
c[i]:=c[i] mod 10;
end;
c[0]:=l;
if k>0 then begin
c[0]:=l+1;
c[l+1]:=k;
end;
end;
var a:array[1..1000]of num;
i,j,x:integer;
begin
readln(x);
a[1,1]:=2;a[1,0]:=1;
a[2,1]:=3;a[2,0]:=1;
for i:=3 to x do
a[i]:=jia(a[i-1],a[i-2]);
for i:=a[x,0] downto 1 do writeln(a[x,i]);
end.
高精度斐波那契数列不解释。。追问
不对
追答额不好意思一个忘记加了
type num=array[0..400]of integer;
function jia(a,b:num):num;
var c:num;
i,j,k,l:integer;
begin
fillchar(c,sizeof(c),0);
if a[0]>b[0] then l:=a[0] else l:=b[0];
k:=0;
for i:=1 to l do
begin
c[i]:=a[i]+b[i];
k:=c[i] div 10;
c[i]:=c[i] mod 10;
end;
c[0]:=l;
if k>0 then begin
c[0]:=l+1;
c[l+1]:=k;
end;
jia:=c;
end;
var a:array[1..1000]of num;
i,j,x:integer;
begin
readln(x);
a[1,1]:=2;a[1,0]:=1;
a[2,1]:=3;a[2,0]:=1;
for i:=3 to x do
a[i]:=jia(a[i-1],a[i-2]);
for i:=a[x,0] downto 1 do writeln(a[x,i]);
end.
程序输出有误
追答type num=array[0..400]of integer;
function jia(a,b:num):num;
var c:num;
i,j,k,l:integer;
begin
fillchar(c,sizeof(c),0);
if a[0]>b[0] then l:=a[0] else l:=b[0];
k:=0;
for i:=1 to l do
begin
c[i]:=a[i]+b[i]+k;
k:=c[i] div 10;
c[i]:=c[i] mod 10;
end;
c[0]:=l;
if k>0 then begin
c[0]:=l+1;
c[l+1]:=k;
end;
jia:=c;
end;
var a:array[1..1000]of num;
i,j,x:integer;
begin
readln(x);
a[1,1]:=2;a[1,0]:=1;
a[2,1]:=3;a[2,0]:=1;
for i:=3 to x do
a[i]:=jia(a[i-1],a[i-2]);
for i:=a[x,0] downto 1 do write(a[x,i]);
writeln;
end.
我说LZ你就一点都不懂吗。。连个高精度加法进位没写都看不出来吗
你就这么懒不想排错吗,我说如果你真的这样你还是别学这个了。。
118. Pascal's Triangle
题目:
Given numRows, generate the first numRows of Pascal‘s triangle.
For example, given numRows = 5,
Return
[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ]
链接: http://leetcode.com/problems/pascals-triangle/
一刷,这道题简单却解得并不好。
- 首先问题是numRows和range(N)时上限的考虑,因为range从0开始,所以要range(numRows - 1)
- list.reverse()是in place的,reversed(list)返回值是新的 list
- cur = cur.extend(second_half)返回的是None!!! cur.extend(second_half)就够了,这种错误平时根本不可能犯,太低级
- numRows == 1是否作为特殊例子返回
有一个总结似乎可以避免4),经常我会用prev, cur两个list,如果只用一个的话似乎可以少判断一次边界情况。
1 class Solution(object): 2 def generate(self, numRows): 3 if numRows == 0: 4 return [] 5 if numRows == 1: 6 return [[1]] 7 result = [[1]] 8 prev = [1] 9 cur = [] 10 11 for row in range(numRows - 1): 12 cur.append(1) 13 for idx in range(row / 2): 14 cur.append(prev[idx] + prev[idx + 1]) 15 second_half = reversed(cur) 16 if row % 2: 17 cur.append(prev[row / 2] + prev[row / 2 + 1]) 18 cur.extend(second_half) 19 result.append(cur) 20 prev, cur = cur, [] 21 return result
以上是关于pascal题目的主要内容,如果未能解决你的问题,请参考以下文章