枚举+计算器模拟——hdu 4192

http://acm.hdu.edu.cn/showproblem.php?pid=4192

这道题A的好辛苦啊!!!

易错点:开始时 a,b当做个位数在考虑

2 42 93 11
(a-b)

就会错,哎思维不严密啊!!!

View Code
#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<map>
using namespace std;

#define MAX 3005
#define CLR(arr) memset(arr,0,sizeof(arr))

char str[MAX];

double creat(int b,int e)
{
if(b > e) return 0;
int p = -1,cnt = 0,flag = 0;
for(int i = b;i <= e;++i)
{
if(str[i] == '(') cnt++;
else if(str[i] == ')') cnt--;
else if((str[i] == '+' || str[i] == '-') && !cnt){flag = 1; p = i;}
else if((str[i] == '*' || str[i] == '/') && !cnt && !flag) p = i;
}
if(p == -1)
{
if(str[b] <= '9' && str[b] >= '0')
{
int res = 0; int n = 0;
sscanf(&str[b],"%d%n",&res,&n);
return res;
}
return creat(b+1,e-1);
}
else
{
switch(str[p])
{
case '+':return creat(b,p - 1) + creat(p + 1,e);
case '-':return creat(b,p - 1) - creat(p + 1,e);
case '*':return creat(b,p - 1) * creat(p + 1,e);
case '/':return creat(b,p - 1)*1.0 / creat(p + 1,e);
default: break;
}
}
}

double EXP(char st[])
{
strcpy(str,st);
return creat(0,strlen(str)-1);
}

char ss[2223];
char temp[2223];
void init()
{
//strcpy(temp,ss);
int i;
int add=0;
for(i=0;ss[i];i++)
{
if(ss[i]!=' ')
{
temp[add]=ss[i];add++;
}
}
temp[add]=0;
}

int cmp(int a,int b)
{
return a<b;
}

int a[99];
int main()
{
int n,m;
double point;
while(scanf("%d",&n)!=EOF)
{
//init();
int i,j;
for(i=1;i<=n;i++){
scanf("%d",&a[i]);
}
scanf("%lf",&point);
if(n==0&&point==0)return 0;

sort(&a[1],&a[n+1],cmp);
scanf("%s",ss);

int ok=0;
do{
int add=1;
int j=0;
for(i=0;ss[i];i++)
{
if(ss[i]>='a'&&ss[i]<='z'){
if(a[add]>=10)
{
temp[j]=a[add]/10+'0';j++;
temp[j]=a[add]%10+'0';j++;
}else
{
temp[j]=a[add]+'0';j++;
}
add++;
}
else
{
temp[j]=ss[i];j++;
}
}
temp[j]=0;

//printf("%.2lf\n",EXP(temp));
if(point==EXP(temp)){
ok=1;break;
}
}while(next_permutation(&a[1],&a[n+1]));

if(ok==0)
printf("NO\n");
else
printf("YES\n");
//printf("%.2lf\n",EXP(temp));
}

return 0;
}



原文地址:https://www.cnblogs.com/huhuuu/p/2435233.html