刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

5.田忌赛马
在田忌赛马的故事中,孙膑用自己的下等马对战对手的上等马,自己上等马对阵对手的中等马,自己的中等马对阵对手的下等马,从而赢得了胜利。现在即将进行的是N匹马的赛马比赛。双方队伍的马各分为N等。已知只有当我方马的等级比对方马等级高X等以上(包含X)时,我方才可以取得这场比赛的胜利。如果在N场比赛中我方的胜场数大于对方,则我方取得最终的胜利。现在已知对方这N场比赛的出战方案,请计算所有令我方最终获胜的出战方案。
时间限制:1000
内存限制:65536
输入
第一行两个整数,N和X。N≤9, 0 ≤ X < N。 第二行N个正整数,A(1)....A(N)。A(i)表示第i场比赛对方马的等级,1≤i≤N。等级越高越强
输出
按字典序输出所有我方最终获胜的方案,每个方案一行。每行是N个正整数,第i个数表示我方第i场比赛马的等级。
样例输入
```
样例1输入
3 1
3 2 1
样例2输入
3 0
3 1 2
```
样例输出
```
样例1输出
1 3 2
样例2输出
1 2 3
1 3 2
2 1 3
3 1 2
3 2 1
```

使用微信搜索喵呜刷题,轻松应对考试!

答案:

解析:

【喵呜刷题小喵解析】这道题是一道经典的编程题,需要使用深度优先搜索(DFS)算法来解决。首先,我们读取输入数据,包括N和X,以及对方马的等级序列A。然后,我们定义一个dfs函数,用于递归地搜索所有可能的出战方案。在dfs函数中,我们维护两个参数:cur_index表示当前要匹配的马的等级,cur_score表示当前我方的胜场数。在dfs函数中,我们遍历从N到1的所有马的等级,如果当前马的等级比对方马的等级高X以上,并且当前马的等级比前一个马的等级强,那么我们就交换当前马和该马的位置,并递归地搜索下一个马的等级。在递归返回后,我们再将当前马和该马的位置交换回来,以便下一次循环。最后,当所有马的等级都匹配完毕后,如果当前我方的胜场数大于0,那么我们就将当前对方马的等级序列加入结果列表中。最后,我们将结果列表按照字典序排序,并输出所有最终获胜的方案。需要注意的是,由于题目要求按照字典序输出所有最终获胜的方案,因此在输出时需要将对方马的等级序列反转,以便按照字典序输出。
创作类型:
原创

本文链接:5.田忌赛马在田忌赛马的故事中,孙膑用自己的下等马对战对手的上等马,自己上等马对阵对手的中等马,自己

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share