我正在解决一个寻找算术表达式最大值的问题。但是我在输入表达式时遇到问题,因为没有固定的字符。
输入格式:
- 输入的唯一行包含一个长度为 2n + 1 的字符串 s,其中包含符号 s0 、 s1 、 。. . , s2n。
- s 偶数位置的每个符号都是一个数字(即 0 到 9 的整数)
- 而奇数位置的每个符号是 {+,-,*} 的三个操作之一。
但我想要不同数组中的数字和符号(int 数组中的数字和 char 数组中的操作)作为我的解决方案。
这就是我最初实现的方式:
string s;
std::cin >> s;
n=s.size();
cout<<"n= "<<n<<endl;
vector<long long> no;
vector<char> ops;
for(int i = 0; i <n; i++)
{
if(i%2==0)
{
no.push_back(s[i]);
}
else{
ops.push_back(s[i]);
}
}
但我无法获得所需的输入,而是得到这个:
INPUT:
5-8+7*4-8+9
OUTPUT:
n = 11
no[0] = 53
no[1] = 56
no[2] = 55
no[3] = 52
no[4] = 56
no[5] = 57
ops[0] = -
ops[1] = +
ops[2] = *
ops[3] = -
ops[4] = +
我还尝试了另一种解决方案:
vector<long long> no;
vector<char> ops;
int i=0;
while(cin)
{
cout<<"i= "<<i<<endl;
if(i%2==0)
{
int s;
cin>>s;
if(s=='\0')
{
exit();
}
cout<<"s= "<<s<<endl;
no.push_back((int)s);
cout<<"no= "<<no[i/2]<<endl;
}
else
{
char s;
cin>>s;
if(s=='\0')
{
exit();
}
cout<<"s= "<<s<<endl;
ops.push_back(s);
cout<<"ops= "<<ops[(i-1)/2]<<endl;
}
i++;
}
但这进入了无限循环。
请帮帮我