[问答题]
两支足球队采用积分制进行若干场比赛,双方的初始积分为0。
每场比赛有以下两种结果:
1、一方获胜,得到3分,另一方失利,得到0分
2、平局,双方各得到1分
请通过编程求解,当双方的积分分别达到a和b时,至多需要进行的比赛场次。如果a和b为不可能出现的积分情况,请输出-1:
1、例如a=3,b=3时,可能进行过2场比赛(双方各取胜一场),也可能进行过3场比赛(双方连续三场战平),那么应该输出3
2、例如a=0,b=1为不可能出现的情况,应该输出-1
实现关键函数即可,可以参考以下函数原型:
int GetMaxRound(int a, int b);
提示:
1、要求使用动态规划进行求解
2、可以使用自己擅长的语言

int GetMaxRound( int a , int b){

if (( a - b ) % 3 != 0 ) return -1;

return Math.Min( a , b ) + ( Math.Max( a , b ) - Math.Min( a , b )) / 3

}

发表于 2024-09-15 22:00:18 回复(1)

int GetMaxRound(int a,int b){

int dp[100][100];

for(int i = 0;i<100;i++){

for(int j = 0;j<100;j++){

if(i>=3) dp[i][j] = max(dp[i][j],dp[i-3][j] +1);

if(j>=3) dp[i][j] = max(dp[i][j],dp[i][j-3]+1);

if(i>=1&&j>=1) dp[i][j] = max(dp[i][j],dp[i-1][j-1] +1);

}

}

return dp[a][b]?dp[a][b]:-1;

}

编辑于 2024-09-24 20:36:42 回复(1)