为什么一个输出也没有~求帮助
查看原帖
为什么一个输出也没有~求帮助
302394
dingshengyang楼主2021/7/5 12:38
#include<bits/stdc++.h>
using namespace std;
inline int read(int &x){
   int s=0,w=1;
   char ch=getchar();
   while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
   while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
   x = s*w;
   return s*w;
}
int a,b,c;
vector <int> v;
int vis[25][25][25];
void dfs(int x,int y,int z){
	if(vis[x][y][z] == -1) return;
	vis[x][y][z] = 1;
	if(x == 0) {
		v.push_back(z);
		return;
	}else{
		if(z+y < b) {
			dfs(x,z+y,0);
//		    vis[x][z+y][0] = -1;
		}
		if(z+y > b){
			dfs(x,b,z+y-b);
//		    vis[x][b][z+y-b] = -1;
		} 
		if(x+y < b){
		    dfs(0,x+y,z);
//		    vis[0][x+y][z] = -1;
		} 
		if(x+y > b) {
			dfs(x+y-b,b,z);
//		    vis[x+y-b][b][z] = -1;
		}
		if(x+z < c){
			dfs(0,y,x+z);
//		    vis[x][b][z+y-b] = -1;
		} 
		if(x+z > c){
			dfs(x+z-c,y,c);
//			vis[x+z-c][y][c] = -1;
		} 
		if(y+z < c){
			dfs(x,0,y+z);
//			vis[x][0][y+z] = -1;
		} 
		if(y+z > c){
			dfs(x,y+z-c,c);
//			vis[x][y+z-c][c] = -1;
		} 
		if(y+x < a){
		    dfs(y+x,0,z);
//			vis[y+x][0][z] = -1;	
		} 
		if(y+x > a) {
			dfs(a,y+x-a,z);
//			vis[a][y+x-a][z] = -1;
		}
		if(z+x < a) {
			dfs(z+x,y,0);
//			vis[z+x][y][0] = -1;
		}
		if(z+x > a){
			dfs(a,y,z+x-a);
//			vis[z+x][y][0] = -1;
		} 
	}
}
int main(){
	memset(vis,-1,sizeof(vis));
    cin >> a >> b >> c;
    dfs(a,b,0);
    sort(v.begin(),v.end());
    for(int i = 0;i < v.size();i++){
    	cout << v[i] << " ";
	}
	cout << endl;
	return 0;
}
2021/7/5 12:38
加载中...