蓝桥杯每日一题2023.11.20

题目描述

"蓝桥杯"练习系统 (lanqiao.cn)

题目分析

方法一:暴力枚举,如果说数字不在正确的位置上也就意味着这个数必须要改变,进行改变记录即可

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
int n, a[N], ans;
int main()
{
	cin >> n;
	for(int i = 1; i <= n; i ++)cin >> a[i];
	for(int i = 1; i <= n; i ++)
	{
		if(a[i] != i)
		{
			for(int j = i + 1; j <= n; j ++)
			{
				if(a[j] == i)
				{
					swap(a[i], a[j]);
					ans ++;
				}
			}
		}
	}
	cout << ans;
	return 0;
}

方法二:置换群算法,每个数字和对应位置相连可以组成一个环,如果说每个数字可以形成自环也就说明每一个数字都在自己正确的位置上,我们可以找出有几个环,n - 环的个数则为需要交换的个数。

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
int a[N], n, cnt;
bool st[N];
int main()
{
	cin >> n;
	for(int i = 1; i <= n; i ++)cin >> a[i];
	for(int i = 1; i <= n; i ++)
	{
		if(!st[i])
		{
			cnt ++;
			for(int j = i; !st[j]; j = a[j])
			{
				st[j] = true;
			}
		}
	}
	cout << n - cnt;
	return 0;
}
相关推荐
Nil2082 小时前
leetcode 198打家劫舍
算法·leetcode·职场和发展
熊猫钓鱼>_>8 小时前
面试出现 606 次的第 K 大,被拆成三个问题问
算法·面试·职场和发展·校招·面经·oj·ai生成
职业信用与履历核验知识库8 小时前
职业画像的数据质量与缺失值处理可靠吗?来源、验证与纠错方法
职场和发展
考研保研资料分享9 小时前
北大软微软件工程保研经验:哈工大面试追问与补录风险取舍
面试·职场和发展·软件工程
yuanxi20010 小时前
长鑫科技4F架构突破:技术节点如何改写客户价值判断
职场和发展·创业创新·学习方法
java_nnnn11 小时前
LeetCode刷题滑动窗口(长度最小的子数组)
算法·leetcode·职场和发展
救救孩子把11 小时前
AI面试八股文-01_1-LLM基础概念(Token-上下文窗口-幻觉)
人工智能·面试·职场和发展·llm·token
Nil20821 小时前
leetcode 763划分字母区间
算法·leetcode·职场和发展
不会就选b1 天前
算法日常・每日刷题--<动态规划>19
算法·leetcode·职场和发展
考研保研资料分享1 天前
新闻传播保研经验:中传预推免面试、广告学代表作与实习准备(2025)
面试·职场和发展