梁乃元 • 20天前
很简单,就不讲了
int n ;
cin >> n ;
for ( int i = 1 ; i <= n ; i ++ )
{
cin >> num ;
a [i] = a [i - 1] + num - 1 ; // a [i] 表示从第1个人到第i个人中编号为2的人数
}
枚举i的位置 若最小步数小于将第1 - i个人的编号改为1,将第(i+1) - n个人的编号改为2,则更新最小步数
minx = n ;
for ( int i = 0 ; i <= n ; i ++ )
{
if ( minx > a [i] + n - i - ( a [n] - a [i] ) )
{
minx = a [i] + n - i - ( a [n] - a [i] ) ;
}
}
若全部都是2(a[n]=n)
if ( n == a [n] )
{
minx = 0 ;
}
直接输出即可
cout << minx << endl ;
评论: