小 X 玩游戏(game)

题目:

时间限制 : 1 Sec
内存限制 : 64 Mb
提交 : 241
解决 : 81

题目描述

听完了故事,小 X 又想去玩一会儿游戏了。 这是一个很奇特的单机游戏, 游戏规则如下:
游戏中一共有 4× n 张牌,每张牌上有一个数字, 这些数字恰好是 1~4× n。一开始电脑会把这 4× n张牌随机打乱,然后会发 2× n 张牌给小 X。那些剩下的 2× n 牌电脑会再打乱一次,然后排成一排展示给小 X 看。而小 X 需要做的就是将自己的 2× n 张牌也排成一排,与电脑展示的 2× n 张牌一一对应。
之后就开始评分了,对于前 n 对牌(一对牌是指小 X 的一张加上电脑的一张), 牌上数字小的一方获得一分; 而对于后 n 对牌, 牌上数字大的一方获得一分。
例 如当 n=3 时, 共 有 12 张牌 , 牌 上的数字是 1 ~ 12 。 电脑打乱 后,小 X 拿到 6 张牌 , 假设 是1, 3, 4, 5, 7, 8。 此时电脑手中还剩下 2, 6,9, 10, 11, 12。同样假设电脑会将这 6 张牌按照 9, 11, 6, 2, 12, 10 这样的顺序展示给小 X 看。如果小 X 是将 6 张牌按 1, 7, 5, 8, 4, 3 这么排的,那么小 X 会获得 4 分。
第 1 对: 1 – 9 ,小 X 得 1 分, 电脑得 0 分
第 2 对: 7 –  11,小 X 得 1 分, 电脑得 0 分
第 3 对: 5 –  6 ,小 X 得 1 分, 电脑得 0 分
第 4 对: 8 –  2 ,小 X 得 1 分, 电脑得 0 分
第 5 对: 4 –  12, 电脑得 1 分,小 X 得 0 分
第 6 对: 3 –  10, 电脑得 1 分,小 X 得 0 分
前一半第 1 对~第 3 对牌是比谁小,后一半第 4 对~第 6 对牌是比谁大。前一列数字代表的是小 X 的牌,后一列数字代表的是电脑的牌。
小 X 现在已经拿到了 2× n 张牌,同时电脑也已经展示出了它的 2× n 张牌是怎么排列的,小 X 想知道他最多能够获得多少分?

输入

输入数据第一行为一个正整数 n。
接下来一行共有 2× n 个用空格隔开的正整数, 表示小 X 手中拥有的 2× n 张牌。
再下一行同样是 2× n 个用空格隔开的正整数, 表示电脑展示出的 2× n 张牌(以读入的顺序展示)。

输出

输出一行只有一个数ans, 表示小 X 最多能够获得的分数。

样例输入

4 5 3 2 16 14 13 9 7 1 8 12 11 15 6 4 10

样例输出 

7

 

思路:

1、把小X的牌从小到大排序。

2、把电脑的前一半排序。

3、要求小的一半从后往前找。

4、要求大的一半从前往后找。

 

标程:

#include<bits/stdc++.h>
using namespace std;
int n,a[10000],b[10000],aa[10000],ans=0;
int main()
{
    scanf("%d",&n);
    for (int i=1;i<=2*n;i++)
    {
        scanf("%d",&a[i]);
        aa[i]=1;
    }
    for (int i=1;i<=2*n;i++)
    {
        scanf("%d",&b[i]);
    }
    sort(a+1,a+2*n+1);
    sort(b+1,b+n+1);
    for (int i=1;i<=n;i++)
    {
        for (int j=1;j<=n;j++)
        {
            if ((aa[j]==1)&&(a[j]<b[i]))
            {
                aa[j]=0;
                ans+=1; 
                break;
            }
        }
    }
    for (int i=n+1;i<=2*n;i++)
    {
        for (int j=1;j<=n*2;j++)
        {
            if ((aa[j]==1)&&(a[j]>b[i]))
            {
                aa[j]=0;
                ans+=1; 
                break;
            }
        }
    } 
 cout<<ans<<endl;
 return 0;
}

转载于:https://www.cnblogs.com/leonqqs/p/7068125.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个简单的贪吃蛇小游戏的Python代码,你可以在Python环境下运行它: ```python import pygame import random # 初始化 pygame.init() # 设置游戏窗口大小 window_width = 800 window_height = 600 game_display = pygame.display.set_mode((window_width, window_height)) # 设置游戏标题 pygame.display.set_caption('贪吃蛇小游戏') # 定义颜色 white = (255, 255, 255) black = (0, 0, 0) red = (255, 0, 0) # 设置蛇的方块大小 block_size = 20 # 加载字体 font = pygame.font.SysFont(None, 25) # 定义函数,显示消息 def message_to_screen(msg, color): screen_text = font.render(msg, True, color) game_display.blit(screen_text, [window_width/2, window_height/2]) # 定义函数,画出蛇 def draw_snake(block_size, snake_list): for x in snake_list: pygame.draw.rect(game_display, black, [x[0], x[1], block_size, block_size]) # 设置帧率 clock = pygame.time.Clock() # 定义主函数,游戏循环 def game_loop(): game_exit = False game_over = False # 蛇的初始位置 lead_x = window_width/2 lead_y = window_height/2 # 蛇的初始速度 lead_x_change = 0 lead_y_change = 0 # 定义蛇的长度 snake_list = [] snake_length = 1 # 随机生成食物的位置 food_x = round(random.randrange(0, window_width - block_size) / 10.0) * 10.0 food_y = round(random.randrange(0, window_height - block_size) / 10.0) * 10.0 while not game_exit: while game_over == True: game_display.fill(white) message_to_screen("Game over, press Q to quit or C to continue", red) pygame.display.update() # 判断游戏是否结束 for event in pygame.event.get(): if event.type == pygame.KEYDOWN: if event.key == pygame.K_q: game_exit = True game_over = False if event.key == pygame.K_c: game_loop() # 监听事件 for event in pygame.event.get(): if event.type == pygame.QUIT: game_exit = True if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: lead_x_change = -block_size lead_y_change = 0 elif event.key == pygame.K_RIGHT: lead_x_change = block_size lead_y_change = 0 elif event.key == pygame.K_UP: lead_y_change = -block_size lead_x_change = 0 elif event.key == pygame.K_DOWN: lead_y_change = block_size lead_x_change = 0 # 判断蛇是否超出边界 if lead_x >= window_width or lead_x < 0 or lead_y >= window_height or lead_y < 0: game_over = True # 更新蛇的位置 lead_x += lead_x_change lead_y += lead_y_change # 清空屏幕 game_display.fill(white) # 画出食物 pygame.draw.rect(game_display, red, [food_x, food_y, block_size, block_size]) # 定义蛇的位置 snake_head = [] snake_head.append(lead_x) snake_head.append(lead_y) snake_list.append(snake_head) # 判断蛇是否吃到食物 if len(snake_list) > snake_length: del snake_list[0] for each_segment in snake_list[:-1]: if each_segment == snake_head: game_over = True # 画出蛇 draw_snake(block_size, snake_list) # 更新屏幕 pygame.display.update() # 判断蛇是否吃到食物 if lead_x == food_x and lead_y == food_y: food_x = round(random.randrange(0, window_width - block_size) / 10.0) * 10.0 food_y = round(random.randrange(0, window_height - block_size) / 10.0) * 10.0 snake_length += 1 # 设置帧率 clock.tick(15) # 退出游戏 pygame.quit() quit() # 开始游戏 game_loop() ``` 运行代码后,你就可以开始玩这个贪吃蛇小游戏了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值