标签:
import java.util.*;
class Main{
public static void main(String[] args) {
Scanner cin=new Scanner(System.in);
long [][]a=new long[25][210];//这里要注意用long数组,不然就会溢出;
a[0][0]=1;
for(int i=1;i<25;i++){//i表示的是场数;
for(int j=i-1;j<=3*(i-1);j++){//j表示的是分数;
if(a[i-1][j]!=0){//这个数组是用来记录各个分数的情况,后一场等于前一场情况相加;
a[i][j+1]+=a[i-1][j];
a[i][j+2]+=a[i-1][j];
a[i][j+3]+=a[i-1][j];
}
}
}
while(cin.hasNext()){
int n=cin.nextInt();
int m=cin.nextInt();
int t=cin.nextInt();
int s=0;
s=(t/15+1)/2;
long sum=0;
for(int i=Math.max( s,((m-n)+(t/15)-s+1));i<=3*s;i++){
sum+=a[s][i];
}
System.out.println(sum);
}
}
}
这个题目用java很容易超时,那个动态数组要放在外面才不会超时;
Time Limit: 300/100 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 3896 Accepted Submission(s):
1015
标签:
原文地址:http://www.cnblogs.com/1314wamm/p/5458844.html