codeforces B.Fixed Points

link:http://codeforces.com/contest/347/problem/B

很简单,最多只能交换一次,也就是说,最多会增加两个。可能会增加一个。也可能一个也不增加(此时都是fixed point)

 #include <cstdio>
 using namespace std;
 ];
 int main(void)
 {
 #ifndef ONLINE_JUDGE
     freopen("in.txt", "r", stdin);
 #endif
     int n;
     while (~scanf("%d", &n))
     {
         ;
         ; i < n; scanf("%d", a+i++));
         bool flag = false;
         ; i < n; ++i)
         {
             if (a[i] == i) cnt++;
             else if (!flag && a[a[i] ] == i)
             {
                 cnt += ;
                 flag = true;
             }
         }
         if (!flag && cnt != n)
             cnt++;
         printf("%d\n", cnt);
     }
     ;
 }

还是WA了一次。逻辑关系没搞清楚。尤其是if和else if

上一篇:Dynamics CRM 之ADFS 使用 WID 的联合服务器场


下一篇:玩转大麦盒子airplay