##acwing 3686.移动序列
思路:这道题你经过分析输入数据和输出数据对比就会发现这道题只需要让第一个1和最后一个1之间的0全部转移到外面即可。然后最精彩的部分来了,这道题只需判断两个1之间有多少0即可。
AC代码
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int a[55];
int main()
{
int t,n;
cin >> t;
while (t --)
{
cin >> n;
for (int i = 1; i <= n; i ++ ) cin >> a[i];
int pos1 = 0,pos2 = 0,ans = 0;
for (int i = 1; i <= n; i ++ )
{
if(a[i] == 1)
{
pos1 = i;
break;
}
}
for (int i = n; i > 0; i --)
{
if(a[i] == 1)
{
pos2 = i;
break;
}
}
for (int i = pos1; i < pos2; i++)
{
if(a[i] == 0) ans++;
}
cout << ans << endl;
}
return 0;
}
##附上acwing y总 代码
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
int t,n;
cin >> t;
while (t --)
{
cin >> n;
int ans = 0,last = -1;
for (int i = 1; i <= n; i ++ )
{
int val;
cin >> val;
if(val == 1)
{
if(last != -1) ans += (i - last - 1);
last = i;
}
}
cout << ans << endl;
}
return 0;
}