`
zjjzmw1
  • 浏览: 1353699 次
  • 性别: Icon_minigender_1
  • 来自: 开封
社区版块
存档分类
最新评论

贪心解法-----c语言

c 
阅读更多

你一定听过田忌赛马的故事吧?
如果3匹马变成1000匹,齐王仍然让他的马按从优到劣的顺序出赛,田忌可以按任意顺序选择他的赛马出赛。赢一局,田忌可以得到200两银子,输一局,田忌就要输掉200两银子,平局的话不输不赢。 请问田忌最多能赢多少银子?

关于输入:
输入包含多组测试数据,每组测试数据的第一行是一个整数n(1<=n<=1000),表示田忌和齐王都拥有n匹马。接下来一行是n个整数,表示田忌的马的速度,下一行也是n个整数,表示齐王的马的速度。 输入的最后以一个0表示结束。

关于输出:

对每组数据,输出一个整数,表示田忌至多可以赢多少银子,如果田忌赢不了,就输出一个负数,表示田忌最少要输多少银子。

 

//
// main.m
// tanxin
//
// Created by zhangmingwei on 13-1-11.
// Copyright (c) 2013年 zhangmingwei. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{

@autoreleasepool {
//求a中有多少比b中好的。如果a好于b则a加1分,相等分数为0 ,坏于b则减1分。因为如果相等的话,为了分数更多,也应该让这次分数为0
int b[10]={1,3,4,5,7,8,9,34,56,77};
int a[10]={2,2,6,7,7,9,11,22,44,56};

// int b[4]={4,7,9,12};
// int a[4]={3,6,8,9};
int m=0;//a的分数
int j=0;
int count1,count2;
count1=count2=10;
for (int i=0; i<count1;) {
if (a[i]>b[j]) {
m++;
i++;
j++;
}
else if (a[count1-1]>b[count2-1]) {
m++;
count1--;
count2--;
}

else{
m--;
i++;
count2--;
}
}

NSLog(@"a的得分为====%d",m);
}
return 0;
}

1
3
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics