赛车编程用c语言,钟神赛车 (C++代码)自己AC了都觉得搞笑

解题思路:

一开始看到是想到田忌赛马的故事,题目也就是按照田忌赛马的思路来求赢的最多场数

这题我还真的是投机取巧AC的,原本想试试的而已,结果却AC了,我都笑了

我的思路是这样的

a是某君   ,b是钟神

对a进行降序排序,对b进行升序排序,也就想按照田忌赛马的思想,下马对上马,中马对下马,上马对中马,这样子可以赢两场输一场赢50

所以 对a进行降序排序,对b进行升序排序,

然后单独对a[1]和b[1]进行比较,如果b[1]>a[1],那么win++;

随后从下标2开始到下标n进行遍历

如果a[i]

最后输出win*50的数字

接下来说说投机取巧就在这里

如 输入   4  4 2 1 3  4 3 1 4

排序对比后有

a: 4 3 2 1       编一个序号为1-4好了 ,即a1我想表示为 4 ,a2表示为3,只是为了方便理解而已

b: 1 3 4 4

如果按照正常田忌赛马来想,肯定第一个就是 a1-4 对b1-1,第一场:用下马对上马,输了

第二场: 剩下    a: 3 2 1     b:  3 4 4,那肯定想到用b3-4对a1-3,赢了

第三场: 剩下     a:  2 1     b:  3  4, 那肯定想到用a1-2对b1-3,赢了

第四场: 剩下     a:   1     b:   4   ,那肯定赢了

结果就是赢3输一     赢的钱就是 :3*50-1*50 = 100;

如果按照我投机取巧的思路,只算赢的,也就是说,没有输,我只算赢的

单独对排序后的 a[1]和b[1],对比,赢了就win++,输了或者平都没赢,就算输了我也不算输

上面的例子

a[1]和b[1]比较,很明显输了,但是我不算输,只算赢,没赢,所以win还是0

随后从下标2开始到下标n进行遍历, 如果a[i]

a[2] 和b[2] 平了,win+=0;

a[3] 和b[3] 赢了,win++;

a[4] 和b[4] 赢了,win++;

所以最后赢了2局,输出就是win*50 = 2*50 = 100;

结果和田忌赛马一样,所以这算是投机取巧了吧.............

注意事项:

参考代码:

#include

#include

#include

#include

#include

#include

using namespace std;

bool cmp(int a, int b){

return a > b;

}

int main(){

int n,i,j,win;//win是代表赢的场数

int a[1000], b[1000];//a是存储某君的每辆车速度,b是存储钟神的每辆车速度

while (cin >> n){

win = 0;//每次初始化为0

for (i = 1; i <= n; i++)cin >> a[i];

for (i = 1; i <= n; i++)cin >> b[i];

sort(a + 1, a + n,cmp);//降序排序

sort(b + 1, b + n);//默认升序,所以不用自己写cmp

if (a[1] < b[1])win++;

for (i = 2; i <= n; i++){

if (a[i] < b[i])win++;

}

cout << win * 50 << endl;//输出赢的钱

}

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值