L1-085 试试手气(15分)

题目描述

一次摇六个筛子, 每粒筛子都不会与其之前出现过的点数重复, 可以人为的控制筛子的点数.

问: 给出一组初始的点数, 在n次投掷后的最大点数.(每次投掷都应使点数和最大).

思路

考虑无初始值的情况, 那么六次筛子投出的点数情况应该为:

6 6 6 6 6 6

5 5 5 5 5 5

4 4 4 4 4 4

3 3 3 3 3 3

2 2 2 2 2 2

1 1 1 1 1 1

由此可得, 初始值的作用是在6->1的过程中'跳过'某一个数字,  只有当投掷次数达到该点数时, 才会被'跳过'.

若按照正常顺序, n次投掷后的数字应该为7 - n,  当出现'跳过'时, 数字为 7 - n - 1

代码

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;

int a[N], n;

int main(){
	for(int i = 1; i <= 6; i++) cin >> a[i];
	cin >> n;
	for(int i = 1; i <= 6; i++){
		if(7 - n <= a[i]) cout << 7 - n - 1; // 跳过一个数字
		else cout << 7 - n;
		cout << (i == 6 ? '\n' : ' '); // 格式
	}
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值