单位网站建设实施方案,厦门物流网站建设,wordpress模板响应式,photoshop在线工具交换瓶子 贡献者#xff1a;programmer_ada
有N个瓶子#xff0c;编号 1 ~ N#xff0c;放在架子上。 比如有5个瓶子#xff1a;
2 1 3 5 4 要求每次拿起2个瓶子#xff0c;交换它们的位置。 经过若干次后#xff0c;使得瓶子的序号为#xff1a;
1 2 3 4 5 对于这么…交换瓶子 贡献者programmer_ada
有N个瓶子编号 1 ~ N放在架子上。 比如有5个瓶子
2 1 3 5 4 要求每次拿起2个瓶子交换它们的位置。 经过若干次后使得瓶子的序号为
1 2 3 4 5 对于这么简单的情况显然至少需要交换2次就可以复位。 如果瓶子更多呢你可以通过编程来解决。 输入格式为两行 第一行: 一个正整数NN10000, 表示瓶子的数目 第二行N个正整数用空格分开表示瓶子目前的排列情况。 输出数据为一行一个正整数表示至少交换多少次才能完成排序。 例如输入 5 3 1 2 5 4 程序应该输出 3 再例如输入 5 5 4 3 2 1 程序应该输出 2 #include bits/stdc.h
using namespace std;int main()
{int a[10005],num,ans;cinnum;for(int i1;inum;i){cina[i];}for(int i1;inum;i){while(a[i]!i){swap(a[i],a[a[i]]);ans;}}coutans;
}