1 solutions

  • 0
    @ 2025-11-5 18:42:20

    C++ :

    #include <iostream>
    #include <iomanip>
    #include <algorithm>
    #include <string>
    #include <cstring>
    #include <cstdio>
    #include <cstdlib>
    #include <cmath>
    #include <ctime>
    using namespace std;
    int N,sz[10],cunc[10000][10],coun=0;
    char zf[5]={'0',' ','+','-','\0'};
    void caoz()
    {
    	int i,j,sum=0,lins=1,fuh=1;
    	for (i=1;i<N;i++)
    	{
    		if (sz[i]==1)
    			lins=lins*10+i+1;
    		else if (sz[i]==2)
    		{
    			if (fuh==1)
    				sum+=lins;
    			else
    				sum-=lins;
    			fuh=1;
    			lins=i+1;
    		}
    		else if (sz[i]==3)
    		{
    			if (fuh==1)
    				sum+=lins;
    			else
    				sum-=lins;
    			fuh=0;
    			lins=i+1;
    		}
    	}
    	if (fuh==1)
    		sum+=lins;
    	else
    		sum-=lins;
    	if (sum==0)
    	{
    		for (i=1;i<=N;i++)
    			cunc[coun][i]=sz[i];
    		coun++;
    	}
    }
    void dfs(int x)
    {
    	if (x==N)
    		caoz();
    	else
    		for (int i=1;i<=3;i++)
    		{
    			sz[x]=i;
    			dfs(x+1);
    		}
    }
    int main()
    {
    	int i,j;
    	scanf("%d",&N);
    	dfs(1);
    	for (i=0;i<coun;i++)
    	{
    		for (j=1;j<N;j++)
    			printf("%d%c",j,zf[cunc[i][j]]);
    		printf("%d\n",N);
    	}
    	return 0;
    }
    
    
    • 1

    Information

    ID
    19000
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By