当前位置: 首页 > article >正文

P8641 [蓝桥杯 2016 国 C] 赢球票--环形结构问题

P8641 [蓝桥杯 2016 国 C] 赢球票

      • 题目
  • 解析
      • 代码

题目

在这里插入图片描述

解析

给定一个顺序的排列,可按一定顺序数数,若数数与排列的值相同可取走,去走后,从下一个重新数数,求不同的数数顺序的最大值

想的就是暴力解答,遍历从每一个数字开始数的情况,求最大值。

环形结构的核心流程:

1.枚举起始点:尝试从每个卡片开始。
2.初始化状态:每次重置标记数组和计数器。
3.循环遍历环形结构:
4.根据当前位置的状态决定是否处理。
5.符合条件时取走卡片,更新状态和计数器。
6.环形移动到下一个位置。
7.终止条件:当无法继续取卡时停止。

代码框架参考:

for (int s = 1; s <= n; s++) {         // 枚举起始点
    int x = 1, sum = 0, cnt = 0, i = s;
    memset(v, 0, sizeof(v));           // 重置状态
    while (1) {
        if (!v[i]) {                   // 卡片未取走
            if (x == a[i]) {           // 符合取卡条件
                sum += a[i];
                cnt++;
                v[i] = 1;              // 更新状态
                x = 0;                 // 重置计数器
            }
            x++;                       // 继续数数
        }
        if (x > n || cnt == n) break;  // 终止条件
        i = (i == n) ? 1 : i + 1;      // 环形移动
    }
    ans = max(ans, sum);
}

//while()-break;和i=i==n?1:i+1;的使用是环形结构的核心

代码

#include <iostream>
#include <vector>
#include <set>
#include <cstring>
#include <algorithm>
#include <math.h>
#include <queue>
#include <climits>  // 包含INT_MAX常量
#include <cctype>
using namespace std;
int n, v[110], a[110], ans = INT_MIN;

int main() {
	cin >> n;
	for (int i = 1; i <= n; i++)
		cin >> a[i];
	for (int s = 1; s <= n; s++) {
		//重置数据
		int x = 1, sum = 0, cnt = 0, i = s;
		memset(v, 0, sizeof(v));
		while (1) {
			if (!v[i]) {
				if (x == a[i]) {
					cnt++;//记录取的次数
					sum += a[i];
					x = 0; //数数,x的重置
					v[i] = 1; //标记已取
				}
				x++;//数数
			}
			if (x > n || cnt == n)//数数超过最大值或已取完
				break;
			i = i == n ? 1 : i + 1; //环形结构核心:确定i的位置
		}
		ans = max(ans, sum);
	}
	cout << ans;
	return 0;
}

http://www.kler.cn/a/579226.html

相关文章:

  • 深入理解人脸特征向量及图片转换方法与开发架构
  • 大白话react第十四章高阶 React 组件开发和React 状态管理进阶等
  • 第7章 wireshark(网络安全防御实战--蓝军武器库)
  • 2025-03-09 学习记录--C/C++-PTA 习题10-8 递归实现顺序输出整数
  • 一行代码让手机秒变 AI 神器:DeepSeek 手机离线部署
  • 每日一题——三道链表简单题:回文,环形合并有序
  • 大规模语言模型的涌现能力
  • 跟着 Lua 5.1 官方参考文档学习 Lua (10)
  • 智慧城市新基建:AI代理IP如何让城市管理“耳聪目明”?
  • 【07】区块链性能
  • 字符串相乘——力扣
  • vue如何获取session对象
  • docker已创建容器设置自启动
  • PY32MD320单片机 QFN32封装,内置多功能三相 NN 型预驱。
  • 记录小白使用 Cursor 开发第一个微信小程序(二):创建项目、编译、预览、发布(250308)
  • Vue3实战学习(Vue3集成Element-Plus(常用依赖、插件安装与导入 。按钮、图标组件。自定义主题的实现)(超详细))(4)
  • 开源网站模板 html静态网页模板
  • 如是APP:AI精准匹配需求,信用体系重构信任,双轮驱动打造无套路电商
  • (C/S)架构、(B/S)架构
  • HCIP复习拓扑练习