zoukankan      html  css  js  c++  java
  • HDU 4403 A very hard Aoshu problem (DFS暴力)



    题意:给你一个数字字符串。问在字符串中间加‘=’、‘+’使得‘=’左右两边相等。


    1212  : 1+2=1+2,   12=12。

    12345666 : 12+3+45+6=66。  1+2+3+4+56=66;

    #include<stdio.h>
    #include<string.h>
    #include<string>
    #include<map>
    #include<stack>
    #include<math.h>
    #include<queue>
    #include<vector>
    #include<stdlib.h>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    #define M 20005
    vector<int>Ga,Gb;
    char s[50];
    int l,len,ans;
    int a[M],b[M];
    int num[55][55];
    int get_num(int x,int y)
    {
    	int sum=0;
    	for(int i=x;i<=y;i++)
    		sum=sum*10+s[i]-'0';
    	return sum;
    }
    void dfs2(int i,int lsum,int rsum)
    {
    	if(i>=len)
    	{
    		if(lsum==rsum)
    			ans++;
    		return;
    	}
    	for(int k=i;k<len;k++)
    		dfs2(k+1,lsum,rsum+num[i][k]);
    }
    void dfs1(int i,int sum)
    {
    	if(i>=l)
    		dfs2(i,sum,0);
    	for(int k=i;k<l;k++)
    		dfs1(k+1,sum+num[i][k]);
    }
    int main()
    {
    	while(scanf("%s",s))
    	{
    		if(s[0]=='E')
    			break;
    		ans=0;
    		int i,j,k;
    		len=strlen(s);
    		for(i=0;i<len;i++)
    		{
    			for(j=i;j<len;j++)
    			{
    				num[i][j]=get_num(i,j);
    			}
    		}
    		for(int a=1;a<len;a++)
    		{
    			l=a;
    			dfs1(0,0);
    		}
    		printf("%d
    ",ans);	
    	}
    	return 0;
    }
    /*
    1212
    12345666
    1235
    */
    


  • 相关阅读:
    Redux API之compose
    Redux API之bindActionCreators
    Django组件-admin
    Django组件-分页器
    Django视图之FBV与CBV
    前端综合练习
    05-前端之jQuery
    关于DOM操作的案例
    04-再探JavaScript
    03-初识JavaScript
  • 原文地址:https://www.cnblogs.com/brucemengbm/p/7232001.html
Copyright © 2011-2022 走看看