1. 程式人生 > >hdu-1121(差分法--數學問題)

hdu-1121(差分法--數學問題)

space 得到 i++ return 思路 col tdi can clas

題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=1121

參考文章:https://blog.csdn.net/fengzhizi76506/article/details/53729148

思路:有一個n階序列P(n),從第二項開始每一項減去前一項得到差組成P(n-1)階序列,直到第0階,即P(0)。

eg:

i=0 1 2 3 4 5

i=1 1 1 1 1

i=2 0 0 0

i=3 0 0

i=4 0

所以p[i][j]=p[i-1][j+1]-p[i-1][j];

#include<iostream>
#include<cstdio>
#include
<cstring> using namespace std; int a[120][120],m,n,i,j,t; int main(void) { scanf("%d",&t); while(t--) { scanf("%d%d",&m,&n); for(i=0;i<m;i++) scanf("%d",&a[0][i]); //遍歷到0階的序列 for(i=1;i<m;i++) { for(j=0;j<m-i;j++) a[i][j]
=a[i-1][j+1]-a[i-1][j]; } //擴展0階序列 for(i=1;i<=n;i++) a[m-1][i]=a[m-1][0]; //依次向上求解,求出後面n個數的值 for(i=m-2;i>=0;i--) { for(j=m-i;j<m+n;j++) a[i][j]=a[i][j-1]+a[i+1][j-1]; } for(i=m;i<m+n-1;i++) printf("%d ",a[0
][i]); printf("%d\n",a[0][i]); } return 0; }

hdu-1121(差分法--數學問題)