大佬求助
查看原帖
大佬求助
352285
Titan_Hope楼主2020/9/17 17:26
#include<iostream>
#include<stdio.h>
#include<cstdlib>
#include<string.h>
using namespace std;
int sn ,a[100],zj[40][100]; //ai里面保存的每次的数 
char s[100];
int k;
int maxn=0;
void dfs(int cs,int sum, char x,char temp[], int ti ,int si)
{
	int temp2;
	//cout<<"cs "<<cs <<"sum "<<sum<<" x "<<x  <<" ti "<<ti<<" si "<<si<<endl;
	//cout<<"temp "<<temp[ti]<<endl;
	char temp3[100];
	if(k-cs==0)
	{
		int l=0;
		for(int j=si;j<sn;j++)
		{
			temp3[l]=s[j];
			l++;
		}
		temp2=atoi(temp3 ) ;
		sum=sum*temp2;
		if(maxn<sum) maxn =sum;
		return ;
	}
	if(k-cs == sn-si-1)	
	{
		//当前位置必须按乘号
		temp[ti] =x;
		temp2 =atoi(temp);
		//cout<<temp2<<" "<<sum<<endl;  
		sum =temp2*sum;
		//cout<<sum<<endl;
		
		for(int j=si+1;j<sn;j++)
		{
			temp3[0]=s[j];
			temp2=atoi(temp3 ) ;
			//cout<<temp2<<endl;
			sum = sum*temp2;
		}
		if(maxn<sum) maxn =sum;
		temp[ti] =NULL;
		ti=0;
		return ;
	}
	if(cs == 0&&x!='*')//如果乘号个数是0的话: 
	{
		temp[ti] = x;
		//cout<<"temp "<<temp[ti]<<endl;
		ti++;
		//cout<<"cs "<<cs <<"sum "<<sum<<" x "<<x  <<" ti "<<ti<<" si "<<si<<endl;
	 	dfs(cs ,sum,s[si+1],temp,ti,si+1);
	 	//cout<<"cs "<<cs <<"sum "<<sum<<" x "<<x  <<" ti "<<ti<<" si "<<si<<endl;
		dfs(cs ,sum,'*',temp,ti, si );
	}
	if(x =='*'&&cs==0)
	{

		//int size =temp.size();
		temp2 =atoi(temp);
		//cout<<temp2<<endl;
		sum =temp2;
		//cout<<sum<<endl;
		memset(temp,sizeof(temp) ,NULL);;
		memset(a,sizeof(a) ,0);
		ti=0;
		//cout<<"cs "<<cs <<"sum "<<sum<<" x "<<x  <<" ti "<<ti<<" si "<<si<<endl;
		dfs(cs+1 ,sum,s[si+1],temp,ti,si+1);
	}

	if(x!='*'&&cs>0)//当前位置不是乘号,并且乘号数大于0 
	{
		temp[ti] =s[si];
		//cout<<temp[ti]<<endl;
		ti++;
		//cout<<"cs "<<cs <<"sum "<<sum<<" x "<<x  <<" ti "<<ti<<" si "<<si<<endl;
		dfs(cs  ,sum,s[si+1],temp,ti,si+1);
		//cout<<"cs "<<cs <<"sum "<<sum<<" x "<<x  <<" ti "<<ti<<" si "<<si<<endl;
		dfs(cs  ,sum,'*',temp,ti,si );
		temp[ti] =NULL;
	}
	if(x=='*'&&cs>0)
	{
		temp2 =atoi(temp); 
		//cout<<temp2<<" "<<sum<<endl;
		sum = sum * temp2;
		//cout<<sum<<endl;
		temp=NULL;
		ti=0;
		//cout<<"cs "<<cs <<"sum "<<sum<<" x "<<x  <<" ti "<<ti<<" si "<<si<<endl;
		dfs(cs+1 ,sum,s[si+1],temp,ti,si+1);
	}
}
int main(void)
{
	int  n;
	cin>>n>>k;
	cin>>s;
	sn= n;
	char temp[100]="";
	temp[0]=s[0];
	//temp = ""; 
	dfs( 0,1,s[0],temp,0,0);
	cout<<maxn;
	return 0;
	
} 
2020/9/17 17:26
加载中...