您的位置:首页 > 其它

九度oj 1101 计算式的一种有趣解决思路

2016-01-25 20:20 337 查看
  首先1101这题出的真缺少条件!!!

  题目链接:http://ac.jobdu.com/problem.php?pid=1101

  我就在想-1-2这种式子就通不过我(别人)的AC代码。

  解题思路到是很赞!!!

  设想这种情况,式子中只有+号,那么结果可以看成是若干数之和。实际情况下,不止+号,还有-,*,/号。-号可以看成是减号后一个数的负数,*号的操作方式是符号的前后两个数直接运算。最后就化简成我们所设想的情况。

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <math.h>
#include <stack>
#define ISYEAP(x) x%100!=0 && x%4==0 || x%400==0 ? 1:0

using namespace std;

int num[110];
bool judge(char cha){
if(cha=='+' || cha=='-' || cha=='*' || cha=='/')
return true;
return false;
}
int main(){
int numb;
char c;
int count=0;
while(scanf("%d",&numb)!=EOF){
memset(num,0,110*sizeof(int));
num[0]=numb;
count=0;
while(scanf("%c",&c)!=EOF && judge(c)){
cin>>numb;
if(c=='+')
{
num[++count]=numb;
}
if(c=='-')
{
num[++count]-=numb;
}
if(c=='*')
{
num[count]*=numb;
}
if(c=='/')
{
num[count]/=numb;
}
}
int answer=0;
for(int i=0;i<=count;i++){
answer+=num[i];
}
cout<<answer<<endl;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: