*vector中的元素不可以重复覆盖,但是数组中的元素可以重复覆盖。
*在编程的过程中,要周全的考虑各种情况。
!经过不断的找bug终于得到了满分代码。
附上代码:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int yesorno[100005]={0};
int nums[4];
char mark[3];
int resultnum(int a, int b, char c)
{
if(c=='+')
return a+b;
if(c=='-')
return a-b;
if(c=='x')
return a*b;
if(c=='/')
return a/b;
}
int main()
{
int n;
cin >> n;
for(int i = 0; i<n; i++){
string temp;
int j=0, m=0;
cin >> temp;
nums[0]=temp[0]-'0';
nums[1]=temp[2]-'0';
nums[2]=temp[4]-'0';
nums[3]=temp[6]-'0';
mark[0]=temp[1];mark[1]=temp[3];mark[2]=temp[5];
for(int q=0; q<3; q++){
if(mark[q]=='x'||mark[q]=='/'){
// cout << nums[q] << mark[q] << nums[q+1] << endl;
nums[q+1]=resultnum(nums[q],nums[q+1],mark[q]);
nums[q] = nums[q+1];
if(mark[q-1]=='x'||mark[q-1]=='/')
nums[q-1] = nums[q];
// cout << nums[q+1] << nums[q]<< endl;
j++;// 用于记录已经算过的符号有多少个
// cout << "j is :" << j << endl;
}
}
if(j==3){
m=nums[3];
if(m==24)
yesorno[i]=1;
// cout << "the result is: " <<m<< endl;
continue;}
else {
m=nums[0];
// cout << "m is: " << m << endl;
for(int p=0; p<3; p++){
// cout << "p is: " << p << endl;
// cout << mark[p];
if(mark[p]=='x'||mark[p]=='/'){
// m=nums[p];
continue;
}
else {
// cout << m << mark[p] << nums[p+1] << endl;
m=resultnum(m,nums[p+1],mark[p]);
}
}
// cout << "the result is: " << m << endl;
if(m==24){
yesorno[i]=1;
}
else {
yesorno[i]=0;
}
}
}
for(int i =0; i<n; i++){
if(yesorno[i]==1)
cout << "Yes" << endl;
else {
cout << "No" << endl;
}
}
return 0;
}