为了使问题简化,假设在接下来的一段时间里,馅饼都掉落在0-10这11个位置。开始时gameboy站在5这个位置,因此在第一秒,他只能接到4,5,6这三个位置中期中一个位置上的馅饼。问gameboy最多可能接到多少个馅饼?(假设他的背包可以容纳无穷多个馅饼)
标签:
为了使问题简化,假设在接下来的一段时间里,馅饼都掉落在0-10这11个位置。开始时gameboy站在5这个位置,因此在第一秒,他只能接到4,5,6这三个位置中期中一个位置上的馅饼。问gameboy最多可能接到多少个馅饼?(假设他的背包可以容纳无穷多个馅饼)
6 5 1 4 1 6 1 7 2 7 2 8 3 0
4
1 #include<stdio.h> 2 int min(int a,int b,int c) 3 { 4 if(a>b) 5 a=b; 6 if(a>c) 7 a=c; 8 return a; 9 } 10 int max(int a,int b) 11 { 12 return a>=b?a:b; 13 } 14 int main() 15 { 16 int n,coords[100020],hour[100020]; 17 int dp[15][100020]; 18 int maxn; 19 int i,j,k; 20 while(scanf("%d",&n)!=EOF,n) 21 { 22 for(i=1;i<=n;i++) 23 { 24 scanf("%d%d",&coords[i],&hour[i]); 25 } 26 for(i=0;i<=11;i++) 27 for(j=0;j<=hour[n];j++) 28 { 29 dp[i][j]=0; 30 } 31 32 j=1; 33 while(hour[j]==1) 34 { 35 dp[coords[j]][1]++; 36 j++; 37 } 38 maxn=1; 39 for(j=2;j<=hour[n];j++) 40 for(i=1;i<=10;i++) 41 { 42 dp[i][j]+=min(dp[i-1][j-1],dp[i][j-1],dp[i+1][j-1]); 43 maxn=max(maxn,dp[i][j]); 44 } 45 46 47
标签:
原文地址:http://www.cnblogs.com/get-an-AC-everyday/p/4186802.html