一道题,大神帮忙看看哪不对
给定一个仅由x,y组成的字符串,你可以进行如下两个操作:操作一:找到两个相邻的字符,左边是x,右边是y,然后交换它们的位置。如果有多组这样的字符,选择最左边的一组进行操作。
操作二:找到两个相邻的字符,左边是y右边是x,然后删除它们。如果有多组这样的字符,选择最左边一组进行操作。
请写一个程序,按照如下步骤执行上面的两个操作:
第一步:如果能执行第二步,那么就执行第二步。否则,输出经过操作得出的字符串。
第二步:如果能执行操作一,执行操作一。如果不能执行操作一,执行操作二。如果没有操作可执行,进行第一步。
#include<iostream>
using namespace std;
bool k,d;
void step2();
void step1()
{
char chars[10], m;
for(int i=0;i<strlen(chars);i++)
{
if(chars[i]<chars[i+1])
{
m=chars[i];
chars[i]=chars[i+1];
chars[i+1]=m;
k=1;
break;
}
else k=0;
}
if(k=1)step1();
else step2();
}
void step2()
{
char chars[10];
for(int i=0;i<strlen(chars);i++)
{
if(chars[i]>chars[i+1])
{
for(int j=i;j<strlen(chars);j++)
{
chars[j]=chars[j+2];
chars[j+1]=chars[j+3];
chars[strlen(chars)-2]='\0';
}
d=1;
break;
}
else d=0;
}
if(d=1)
{step2();}
else
{cout<<chars;}
}
main()
{
char chars[10];
cout<<"请输入:"<<endl;
cin>>chars;
step1();
}