• HDU 3131 One…Two…Five! (暴力搜索)


    题目链接:HDU 3131 One…Two…Five! (暴力搜索)

    题意:给出一串数字,要求用加,减,乘,除(5/2=2)连接(计算无优先级:5+3*6=8*6=48),求全部结果中,含有‘3’且该数字出现频率最大。若频率相等,输出数字最大的。


    暴力解决之


    AC代码:



    #include <stdio.h>
    #include <map>
    #include <string.h>
    #include <algorithm>
    #define LL __int64
    using namespace std;
    LL a[20],cnt,k;
    map<LL,LL> ans;
    map<LL,LL>::iterator it;
    bool cmp(LL a,LL b)
    {
    	return a>b;
    }
    
    LL cal(LL sum,LL temp,LL op)
    {
    	if(op==0)
    		return sum+temp;
    	if(op==1)
    		return sum-temp>0? sum-temp:temp-sum;
    	if(op==2)
    		return sum*temp;
    	if(op==3)
    		return sum/temp;
    }
    
    void dfs(LL x,LL sum)
    {
    	if(x==cnt)
    	{
    		LL tempsum=sum;
    		while(tempsum)
    		{
    			if(tempsum%10==3)
    			{
    				ans[sum]++;
    				k++;
    				//printf("%I64d
    ",sum);
    				break;
    			}
    			tempsum/=10;
    		}
    		return  ;
    	}
    	for(LL i=0;i<4;i++)
    	{
    		if(i==3 && a[x]==0)
    			continue;
    		LL temp=cal(sum,a[x],i);
    		dfs(x+1,temp);
    	}
    }
    
    int main()
    {
    	char s[100];
    	LL len,i;
    	while(gets(s))
    	{
    		if(s[0]=='#')
    			break;
    		ans.clear();
    		len=strlen(s);
    		LL temp;
    		cnt=temp=0;
    		for(i=0;i<len;i++)
    		{
    			if(s[i]==' ')
    			{
    				a[cnt++]=temp;
    				temp=0;
    				continue;
    			}
    			temp=temp*10+s[i]-'0';
    		}
    		a[cnt++]=temp;
    		k=0;
    		dfs(1,a[0]);
    		if(k)
    		{
    			LL maxt=-1,maxans;
    			for(it=ans.begin();it!=ans.end();it++)
    			{
    				if(maxt<=(it->second))
    				{
    					maxt=it->second;
    					maxans=it->first;
    					if((it->first)>maxans)
    						maxans=it->first;
    				}
    			}
    			printf("%I64d
    ",maxans);
    		}
    		else
    			printf("No result
    ");
    	}
    	return 0;
    }
    


  • 相关阅读:
    Handler Looper MessageQueue HandlerThread
    Android屏幕适配
    android开发环境搭建
    Task
    C#语法糖
    Window Phone 开发学习
    Android ListView使用
    网络分析工具
    VS2005在水晶报表中如何显示数据库中保存的是图片路径的图片
    在SQL Server中获取Excel文件中所有Sheet工作表的名称
  • 原文地址:https://www.cnblogs.com/llguanli/p/7105734.html
Copyright © 2020-2023  润新知