将石头分成质量相近的两组,并输出

背包问题,可以转化为0.1,递增排序好,选定两个,从最大的开始比较,给较小的加上第三大,以此循环,最后可以输出

#include <iostream>

#include<cstring>

#include<vector>

#include<algorithm>

using namespace std;

int main(){

    int n;

    vector<int> v; 

   while (cin >> n){

        cin.get();

        v.push_back(n);

    }

    sort(v.begin(),v.end());

    int sum=accumulate(v.begin(),v.end(),0);

    int l=v.size();

    int f=v[l-1],s=v[l-2];

    if(l>=3){

        for(int i=l-3;i>=0;--i){

            if(f>s)s+=v[i];

              

            else f+=v[i];

    }}

      

    if(f>s) cout<<f<<","<<sum-f;

    else cout<<s<<","<<f;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
抱歉,看来字符集转换为 UTF-8 并没有解决所有的乱码问题。这可能是因为在 Windows 10 下,批处理文件的字符集不仅仅受到批处理文件本身的影响,还受到当前系统的区域设置等因素的影响。 为了更好地解决乱码问题,您可以将批处理文件的字符集设置为当前系统的 ANSI 字符集,具体方法是把 `chcp 65001` 替换为 `chcp` 命令后面跟着当前系统的 ANSI 字符集代码,例如 `chcp 936` 表示简体中文的 ANSI 字符集。您可以通过执行 `chcp` 命令来查看当前系统的 ANSI 字符集代码。 下面是一个根据当前系统的 ANSI 字符集进行设置的代码示例: ``` @echo off chcp 936 > nul title 猜拳游戏 color 0a setlocal enabledelayedexpansion :game echo. echo 请选择您的手势: echo 1. 石头 echo 2. 剪刀 echo 3. 布 set /p user_choice=您的选择是: set /a computer_choice=%random% %% 3 + 1 if %user_choice% equ 1 ( if %computer_choice% equ 1 ( echo 你出的是 石头,电脑出的也是 石头,平局! ) else if %computer_choice% equ 2 ( echo 你出的是 石头,电脑出的是 剪刀,你赢了! color 0c <nul set /p="♥" ) else ( echo 你出的是 石头,电脑出的是 布,你输了! ) ) else if %user_choice% equ 2 ( if %computer_choice% equ 1 ( echo 你出的是 剪刀,电脑出的是 石头,你输了! ) else if %computer_choice% equ 2 ( echo 你出的是 剪刀,电脑出的也是 剪刀,平局! ) else ( echo 你出的是 剪刀,电脑出的是 布,你赢了! color 0c <nul set /p="♥" ) ) else if %user_choice% equ 3 ( if %computer_choice% equ 1 ( echo 你出的是 布,电脑出的是 石头,你赢了! color 0c <nul set /p="♥" ) else if %computer_choice% equ 2 ( echo 你出的是 布,电脑出的是 剪刀,你输了! ) else ( echo 你出的是 布,电脑出的也是 布,平局! ) ) else ( echo 无效的选择,请重新输入! goto game ) set /p choice=是否再来一局?(Y/N) if /i "%choice%" equ "Y" ( cls goto game ) else ( endlocal exit ) ``` 您可以尝试运行上述代码,看是否能够正常显示中文和红色爱心。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值