有N个瓶子,编号 1 ~ N,放在架子上。
比如有5个瓶子:
2 1 3 5 4
要求每次拿起2个瓶子,交换它们的位置。
经过若干次后,使得瓶子的序号为:1 2 3 4 5
如果瓶子更多呢?
- 请随机乱序生成1,2,3…100这100个数
- 在(1)的基础上编程计算最少多少次归位。
不知道如何讲清楚,请去B站看视频。clc;clear; a=randperm(100); sum=0;pos=0;//初始化为0 for i=1:100 if a(a(i))~=i//如果该数未归位,归位则跳过。 pos=a(a(i)); a(a(i))=a(i); a(i)=pos;//交换位置 sum=sum+1;//计数 end end disp(sum);