天梯赛题解(3-6)

前五题都是非常简单的题,就不写解析了

1-3 帮助色盲

cpp 复制代码
#include<iostream>
using namespace std;

int main(){
	int a, b;
	cin >> a >> b;
	if(b == 1){
		if(a == 1) cout << "-" << endl << "move";
		else if(a == 2) cout << "-" << endl << "stop";
		else cout << "-" << endl << "stop"; 
	}
	else if(b == 0){
		if(a == 1) cout << "dudu" << endl << "move";
		else if(a == 2) cout << "-" << endl << "stop";
		else cout << "biii" << endl << "stop";
	}
	return 0;
} 

1-4

注意有可能值为负,所以拿不了满分
cpp 复制代码
#include<bits/stdc++.h>
#define int long long
using namespace std;

int n, m, k; 
int ans = 0;

signed main()
{
    cin >> n >> m;
    for(int i = 1; i <= m; i++)
    {
        cin >> k;
        ans += k;
    }
    int diff = ans - n * (m - 1);
    cout << max((long long)0, diff) << endl;
    return 0;
}

1-5 程序员买包子

cpp 复制代码
#include<iostream>
using namespace std;

int main(){
	int n, m, k;
	string x;
	cin >> n >> x >> m >> k;
	if(k == n) cout << "mei you mai " << x << " de";
	else if(k == m) cout << "kan dao le mai " << x << " de";
	else cout << "wang le zhao mai " << x << " de";
	return 0;
} 

1-6 试试手气

有可能有更简单的方法。。。
cpp 复制代码
#include<iostream>
using namespace std;

// 全局二维数组 b[6][7]:
// 第一维 [0-5] → 对应6个骰子的编号(第0个到第5个骰子)
// 第二维 [0-6] → 对应骰子点数(0位闲置不用,1-6对应骰子的6个面)
// 标记规则:b[骰子编号][点数] = 1 表示该骰子已出现过这个点数;=0 表示未出现过
int b[6][7];

int main(){
	// 数组a[6]:存储6个骰子「当前的点数」,最终会更新为第n次摇出的结果
	int a[6];
	// 变量n:需要模拟摇骰子的次数(题目要求输出第n次的结果)
	int n;
	
	// 第一步:读取6个骰子的初始点数,并初始化「点数出现标记数组」b
	for(int i = 0; i < 6; i++){
		cin >> a[i];               // 输入第i个骰子的初始点数,存入a[i]
		b[i][a[i]] = 1;            // 标记:第i个骰子已出现过a[i]这个点数
	}
	
	// 第二步:读取需要模拟的摇骰子次数n
	cin >> n;

	// 第三步:核心逻辑 → 模拟摇n次骰子的过程
	// while(n--) 等价于循环n次(每循环一次n减1,直到n=0停止)
	while(n--){
		// 遍历6个骰子,逐个更新本次摇出的点数
		for(int k = 0; k < 6; k++){
			// 从6到1倒序查找:优先选「最大的、且未出现过」的点数(满足题目规则)
			for(int j = 6; j > 0; j--){
				// 如果第k个骰子从未出现过点数j
				if(b[k][j] == 0){
					a[k] = j;        // 更新第k个骰子的当前点数为j
					b[k][j] = 1;     // 标记该点数已使用,避免后续重复
					break;           // 找到最大可用点数后,跳出内层循环,处理下一个骰子
				}
			}	
		}
	}
	
	// 第四步:输出第n次摇出的结果(优化格式:行首尾无多余空格)
	for(int i = 0; i < 6; i++){
		if(i!=5)                  // 前5个骰子(0-4号):输出点数后加空格
            cout << a[i] << " ";
        else                     // 第6个骰子(5号):仅输出点数,不加空格
            cout << a[i];
	}
	
	return 0;
}
相关推荐
elseif12322 分钟前
【C++】并查集&家谱树
开发语言·数据结构·c++·算法·图论
偷吃的耗子33 分钟前
【CNN算法理解】:卷积神经网络 (CNN) 数值计算与传播机制
人工智能·算法·cnn
徐小夕@趣谈前端43 分钟前
Web文档的“Office时刻“:jitword共建版2.0发布!让浏览器变成本地生产力
前端·数据结构·vue.js·算法·开源·编辑器·es6
问好眼1 小时前
【信息学奥赛一本通】1275:【例9.19】乘积最大
c++·算法·动态规划·信息学奥赛
Daydream.V1 小时前
逻辑回归实例问题解决(LogisticRegression)
算法·机器学习·逻辑回归
代码无bug抓狂人1 小时前
C语言之表达式括号匹配
c语言·开发语言·算法
不穿格子的程序员1 小时前
从零开始写算法——普通数组篇:缺失的第一个正数
算法·leetcode·哈希算法
Nebula_g1 小时前
线程进阶: 无人机自动防空平台开发教程(更新)
java·开发语言·数据结构·学习·算法·无人机
rit84324992 小时前
基于MATLAB的环境障碍模型构建与蚁群算法路径规划实现
开发语言·算法·matlab
hoiii1872 小时前
MATLAB SGM(半全局匹配)算法实现
前端·算法·matlab