主要思路
主要思路就是數(shù)字先生找椅子坐妓灌,在沒有匹配之前主要的目的就是讓0先生何陆、1先生、2先生等人分別做到對應(yīng)的0座位抵碟、1座位桃漾、2座位等座位,直到有一個數(shù)字先生發(fā)現(xiàn)自己所屬的座位有一個和自己一模一樣的人拟逮。
代碼
#include<iostream>
using namespace std;
int main()
{
bool func(int nums[],int length,int *p);
int a[10] = {2,3,5,2,2,4,6,8,9,1};
int *p = a; //指針使用之前要初始化
func(a,10,p);
cout<<*p<<endl;
}
bool func(int nums[],int length,int *p)
{
for(int i=0;i<length;i++)
{
cout<<i<<endl;
while(nums[i] != i) //人不在合適的位置上
{
if(nums[i] == nums[nums[i]]) //發(fā)現(xiàn)有人坐到了自己的位置上面
{
cout<<nums[i]<<endl;
*p = nums[i];
cout<<"not here"<<endl;
return true;
}
//目的是為了nums[nums[i]] = nums[i] //讓人做到屬于他自己的位置上面
/*
這樣寫代碼實在是太丑了
temp = nums[nums[i]];
nums[nums[i]] = nums[i]; //key
nums[i] = temp;
*/
cout<<"unchanged"<<endl;
int temp = nums[i];
nums[i] = nums[temp];
nums[temp] = temp;
cout<<"changed"<<endl;
}
}
return false;
}