package com.bluecup.org;
import java.util.Scanner;
public class MaxPlate {
static int plate[][][]=new int[20][20][20];
static boolean used[][]=new boolean [20][20];
static int value[][]=new int[20][20];
/**
* @param args
*/
static int n,m,t;
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan=new Scanner(System.in);
n=scan.nextInt();
m=scan.nextInt();
t=scan.nextInt();
for(int i=1;i<=m;i++)
{
int a=scan.nextInt();
int b=scan.nextInt();
value[i][a]=b;
}
used[0][1]=true;
System.out.println(getMaxPlate());
}
private static int getMaxPlate() {
// TODO Auto-generated method stub
for(int i=1;i<=t;i++)
{
for(int j=1;j<=n;j++)
for(int k=1;k<=m;k++)
{
int a=0,b=0,c=0;
if(used[k-1][j-1])
{
a=plate[i-1][j-1][k-1];
used[k][j]=true;
}
if(used[k-1][j+1])
{
b=plate[i-1][j+1][k-1];
used[k][j]=true;
}
if(used[k-1][j])
{
c=plate[i][j][k-1];
used[k][j]=true;
}
if(a<b)a=b;
if(a<c)a=c;
if(value[k][j]>0&&used[k][j])
{
a+=value[k][j];
}
plate[i][j][k]=a;
}
}
int max=0;
for(int i=1;i<=n;i++)
{
if(plate[t][i][m]>max)
max=plate[t][i][m];
}
return max;
}
}
动态规划 抓盘子游戏
最新推荐文章于 2021-11-19 18:40:49 发布