刚开始我以为是道难题,后来就想直接模拟算了吧,就记录下1 2 3的个数,分成了3个区间,然后先找1区间中的2,2是从2区间到3的找,找3就从3区间到2区间的找,这样一来1区间就全部是1了,找2区间中的3就没压力了。大概思路就这样。
View Code
1 #include2 #include 3 #include 4 #include 5 #define max(a,b) a>b?a:b 6 #define min(a,b) a>b?b:a 7 #define INF 0x3f3f3f3f 8 #define Maxin 10000 9 int fang[4][2]={ {-1,0},{ 1,0},{ 0,-1},{ 0,1}};10 int n;11 int s[1005];12 int k[5];13 14 int main()15 {16 int x,y,ans=0;17 memset(k,0,sizeof(k));18 scanf("%d",&n);19 for(x=0;x =k[1];y--)43 if(s[y]==1)44 break;45 if(y!=k[1]-1)46 {47 ans++;48 s[x]^=s[y];49 s[y]^=s[x];50 s[x]^=s[y];51 }52 53 }54 }55 for(x=k[1];x