3 条题解

  • 1
    @ 2025-10-31 19:59:03
    ```
    
    ```
    #include<bits/stdc++.h>
    #pragma GCC optimize(2)
    using namespace std;
    int a,b,c,f[100000];
    int ans[25][25][25];
    void dfs(int A,int B,int C)
    {
    	if(ans[A][B][C]==1) return ;
    	else ans[A][B][C]=1;
        if(A==0&&f[C]==0){
            f[C]=1;
        }
        if(A<a&&C>0)dfs(min(a,A+C),B,max(0,C-a+A));
        if(B<b&&C>0)dfs(A,min(b,B+C),max(0,C-b+B));
        if(A<a&&B>0)dfs(min(a,A+B),max(0,B-a+A),C);
        if(C<c&&B>0)dfs(A,max(0,B-c+C),min(c,C+B));
        if(B<b&&A>0)dfs(max(0,A+B-b),min(b,B+A),C);
        if(C<c&&A>0)dfs(max(0,A+C-c),B,min(c,C+A));
    }
    int main()
    {
        cin>>a>>b>>c;
        dfs(0,0,c);
        for(int i=0;i<=c;i++) if(f[i]==1) cout<<i<<" ";
        return 0;
    }
    ```
    ```
    
    • 1
      @ 2023-1-6 14:41:02

      简单dfs

      #include<bits/stdc++.h>
      using namespace std;
      int a,b,c,ans[10001],ans1;
      bool t[61][61][61];
      void dfs(int x,int y,int z)
      {
      	if(t[x][y][z])return;
      	if(x==0)ans[++ans1]=z;
      	t[x][y][z]=1;
      	if(z<=a-x)dfs(x+z,y,0);
      	else dfs(a,y,z-a+x);
      	//z->x
      	if(z<=b-y)dfs(x,y+z,0);
      	else dfs(x,b,z-b+y);
      	//z->y
      	if(y<=a-x)dfs(x+y,0,z);
      	else dfs(a,y-a+x,z);
      	//y->x
      	if(y<=c-z)dfs(x,0,z+y);
      	else dfs(x,y-c+z,c);
      	//y->z
      	if(x<=b-y)dfs(0,y+x,z);
      	else dfs(x-b+y,b,z);
      	//x->y
      	if(x<=c-z)dfs(0,y,z+x);
      	else dfs(x-c+z,y,z);
      	//x->z
      }
      int main()
      {
      	cin>>a>>b>>c;
      	dfs(0,0,c);
      	sort(ans+1,ans+ans1+1);
      	for(int i=1;i<=ans1;i++)
      	cout<<ans[i]<<" ";
      }
      
      • 0
        @ 2025-7-15 8:21:54
        #include<bits/stdc++.h>
        using namespace std;
        typedef long long ll;
        ll A,B,C,f[50][50][50],h[50];
        void dfs(ll a,ll b,ll c)
        {
        	if(f[a][b][c]==0){
        		f[a][b][c]=1;
        		if(a==0) h[c]=1;
        		if(a<B-b) dfs(0,b+a,c); else dfs(a-(B-b),B,c);
        		if(a<C-c) dfs(0,b,c+a); else dfs(a-(C-c),b,C);
        		if(b<A-a) dfs(a+b,0,c); else dfs(A,b-(A-a),c);
        		if(b<C-c) dfs(a,0,c+b); else dfs(a,b-(C-c),C);
        		if(c<A-a) dfs(a+c,b,0); else dfs(A,b,c-(A-a));
        		if(c<B-b) dfs(a,b+c,0); else dfs(a,B,c-(B-b));
        	}
        }
        int main()
        {
        	cin>>A>>B>>C;
        	dfs(0,0,C);
        	for(int i=0;i<=30;i++)
        	if(h[i]==1) cout<<i<<' ';
        }
        
        • 1

        信息

        ID
        143
        时间
        1000ms
        内存
        256MiB
        难度
        3
        标签
        (无)
        递交数
        214
        已通过
        108
        上传者