欢迎收看大型纪录片之黑白棋子的移动
有一道题叫黑白棋子的移动↓↓↓
【题目描述】
有2n个棋子(n>=4)排成一行,白子(o)全在左边,黑子(*)全在右边n=5如(ooooo*****)
任
↓↓↓如↓↓↓
样例输入: 7
样例输出:7
step 0:ooooooo****** --
step 1:oooooo--***** o*
step 2:oooooo* ***--o
step 3:ooooo-- **o o
step 4:ooooo** **--oo
step 5:oooo--* *oo o
step 6:oooo*** --oo o*
step 7:ooo--** oo oo
step 8:ooo o**--o oo
step 9:o-- o**ooo oo
step 10:oo o --oo oo
step 11:--o oo oo oo
由于此题过于简单
直接奉上代码
#include<bits/stdc++.h>
using namespace std;
int nst,sp,st,n;
char c[1001];
void print()
{
int i;
cout<<"step "<<st<<':';
for(i=1;i<=2*n+2;i++)
{
cout<<c[i];
}
cout<<endl;
st++;
}
void intit(int n)
{
int i;
st=0;
sp=2*n+1;
for(i=1;i<=n;i++)
{
c[i]='o';
}
for(i=n+1;i<+2*n;i++)
{
c[i]='*';
}
c[2*n+1]='-';
c[2*n+2]='-';
print();
}
void move(int k)
{
int j;
for(j=0;j<=1;j++)
{
c[sp+j]=c[k+j];
c[k+j]='-';
}
sp=k;
print();
}
void mv(int n)
{
if(n==4)
{
move(4);
move(8);
move(2);
move(7);
move(1);
}
else
{
move(n);
move(2*n-1);
mv(n-1);
}
}
int main()
{
cin>>n;
intit(n);
mv(n);
return 0;
}
再考考大家
☞ 一道题 (需登录luogu)
↓↓↓参考答案↓↓↓
#include <iostream>
using namespace std;
int n, sum;
int main()
{
cin >> n;
int a[n];
for (int i = 0; i < n; ++i)
cin >> a[i];
for (int i = 0; i < n; ++i)
for (int j = 0; j < i; ++j)
if (a[j] > a[i])
++sum;
cout << sum;
return 0;
}
好啦!
这期就到这里了
记得点赞
散会