[蓝桥杯 2016 省 B] 交换瓶子(暴力枚举)

        通过题目描述,我们可以直接模拟题目过程,首先从开头开始遍历,如果遇到错位的瓶子,就从当前瓶子向后再次遍历,直到遇到需要交换的瓶子就直接进行交换,同时统计次数,这样遍历到最后就能直接得出答案

上代码

#include<iostream>
#include<algorithm>
#include<cstring>

using namespace std;

int main(void)
{
	int ans = 0;
	int n; cin >> n;
	int *bottle = new int[n + 10];
	for(int i = 1; i <= n; i++) cin >> bottle[i];
	
	for(int i = 1; i <= n; i++){
		if(bottle[i] != i){//如果当前的瓶子编号不对 
			for(int j = i + 1; j <= n; j++){//进行遍历,寻找到符合当前位置的瓶子 
				if(bottle[j] == i){
					ans++;
					swap(bottle[i], bottle[j]);
					break;
				}
			}
		}
	}
	cout << ans << endl;
	
	return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值