小提示:部分题目的图形有偏移现象;解决办法为,将题目拷贝到记事本,字体设置为‘Fixedsys’。
(编译环境:windowsXP_sp3 + Visual_C++_2008,保证编译成功,正常运行。)
14. 有黑白棋子各有N个(分别用*和O代替),按下图方式排列
***...***OOO...OOO
N个黑棋 N个白棋
允许将相邻两个棋子互换位置,最后使队形成黑白交替排列,试编程实现该操作。
代码如下:
#include<iostream>
using namespace::std;
void main()
{
int n;
char *a;
cout<<"请输入N的数量"<<endl;
cin>>n;
n=n*2;
a = new char [n];
for(int i=0;i<n/2;i++)
a[i] = 'X';
for(int i=n/2;i<n;i++)
a[i] = 'O';
int k=0;
int m = n;
while(n!=0)
{
for(int i=0;i<n-1;i++)
if(a[i]!=a[i+1])
{
char temp;
temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
k++;
cout<<"棋子互换"<<k<<"次之后"<<endl;
for(int j=0;j<m;j++)
cout<<a[j]<<" ";
cout<<endl;
}
else
continue;
n=n-2;
}
cout<<"一共需要互换"<<k<<"次棋子"<<endl;
cout<<endl;
system("pause");
}