P4995 跳跳!( 普及/提高-)————贪心

题解:本题主要考查贪心。如果要值最大,就要高度差最大,所以先排序在剩余的石头中最大和最小来回跳就可以啦。
代码如下:

#include<iostream>
#include<algorithm>
using namespace std;
long long int a[310],num=0;
int n,i,p,q;
int main()
{
    cin>>n;	
    for(i=1;i<=n;i++)cin>>a[i];
    sort(a+1,a+1+n);
    p=0;q=n;
    while(p<q)
    {
        num=(a[q]-a[p])*(a[q]-a[p])+num;
        p++;
        num=(a[p]-a[q])*(a[p]-a[q])+num;
        q--;
    }
    cout<<num;
    return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,跳跳乐小游戏可以用C语言来编写。下面是一个简单的示例代码: ``` #include <stdio.h> #include <stdlib.h> #include <time.h> #define MAX_LEVEL 5 // 最大难度等级 #define MIN_SPEED 1 // 小球最小速度 #define MAX_SPEED 5 // 小球最大速度 int main() { int level = 1; // 初始难度等级为1 int speed = 1; // 初始小球速度为1 int score = 0; // 初始得分为0 int target = 0; // 目标得分 int ball_pos = 0; // 小球位置 int player_pos = 0;// 玩家位置 int input = 0; // 玩家输入 int i = 0; srand(time(NULL)); // 初始化随机数生成器 while (1) { target = level * 10; // 计算目标得分 ball_pos = rand() % 10; // 随机生成小球位置 player_pos = 4; // 玩家位置初始为中间 printf("Level: %d\nScore: %d\nTarget: %d\n", level, score, target); while (1) { // 打印画面 for (i = 0; i < 10; i++) { if (i == ball_pos) { printf("o"); } else if (i == player_pos) { printf("|"); } else { printf(" "); } } printf("\n"); // 等待玩家输入 printf("Enter 1 to move left, 2 to move right: "); scanf("%d", &input); // 处理玩家输入 if (input == 1) { player_pos--; } else if (input == 2) { player_pos++; } // 判断小球位置 if (ball_pos == player_pos) { score++; speed++; // 判断是否过关 if (score >= target) { level++; speed = MIN_SPEED; score = 0; } break; } else if (ball_pos > player_pos) { ball_pos -= speed; } else { ball_pos += speed; } // 判断小球是否碰到地面 if (ball_pos >= 10) { printf("Game Over!\n"); return 0; } } } return 0; } ``` 这个示例代码实现了一个简单的跳跳乐小游戏,玩家需要控制竖杠 "|" 的位置来接住从上方落下的小球 "o",每接住一个小球得分加一,当得分达到一定目标时就可以过关。难度等级随着过关次数逐渐增加,小球速度也会逐渐加快。如果小球落到地面上就游戏结束。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值