hdu1121Complete the Sequence

一看到它就懵了,后来看了题解,原来这道题目跟我们以前学过的数学斜率知识很像,一阶的斜率为一个数,二阶的斜率为一个一阶数组.....所以用差分就可以解决这个问题

 

说说我所犯下的错误吧——一个无形的空格号

for(i=n+1;i<=n+m;i++)cout<<f[0][i]<<'  ';cout<<endl;结果呢,在每种情况的输出后面多了一个空格

for(i=n+1;i<n+m;i++)cout<<f[0][i]<<'  ';cout<<f[0][i]<<endl;结果呢,每种情况得到了正确的输出

#include "iostream"
using namespace std;
int main(){
  int Case,n,m,i,num[210],f[210][210],j;
  cin>>Case;
  while(Case--){
    cin>>n>>m;
    for(i=1;i<=n;i++){cin>>num[i];f[0][i]=num[i];}
    for(i=1;i<n;i++){
      for(j=1;j<=n-i;j++){
        f[i][j]=f[i-1][j+1]-f[i-1][j];
      }
    }
    for(i=2;i<=1+m;i++){f[n-1][i]=f[n-1][1];}
    for(i=n-2;i>=0;i--){
      for(j=n-i;j<=n+m;j++){
        f[i][j]=f[i+1][j-1]+f[i][j-1];
      }
    }
    //cout<<"number ";for(i=1;i<=n+m;i++)cout<<f[0][i]<<' ';cout<<endl;
    for(i=n+1;i<n+m;i++)cout<<f[0][i]<<' ';
    cout<<f[0][i]<<endl;
  }
}

 

 

 

posted @ 2013-08-23 10:24  龙城星  阅读(175)  评论(0编辑  收藏  举报