题解 | I 体操队形

数字游戏

https://ac.nowcoder.com/acm/contest/11217/A

因为数据范围只有( 1 < n < 10 ), 利用STL容器next_permutation 得到全排列 ,然后循环判断该排列是否符合题意。

int f[15] ;
int a[15] ;
void solve()
{
    int n ;
    cin >> n ;
    int x ;
    bool flag = 0 ;
    loop( i , 1 , n ) f[i] = i ;
    loop( i , 1 , n ){
        cin >> x ;
        f[i] = x ;
    }
    int res = 0 ;
    loop( i , 1 , n ) a[i] = i ;
    do{
        int cnt = 0 ;
        loop( i , 1 , n ){
            int pos_1 ;
            int pos_2 ;
            loop( j , 1 , n ){
                if( a[j] == i ){
                    pos_1 = j ;
                    break ;
                }
            }
            loop( j , 1 , n ){
                if( a[j] == f[i] ){
                    pos_2 = j ;
                    break ;
                }
            }
            if( pos_1 <= pos_2 ){
                cnt++ ;
            }
        }
        if( cnt == n ) res++ ;
    }while( next_permutation(a+1,a+n+1) );
    cout << res << endl ;
    return ; 
}
全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务