标签:
//这么写为什么不行,练样例都过不了,问题出在哪?
#include<queue> #include<math.h> #include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> using namespace std; #define N 115 int a[4][N]; int mark[4][N]; int n,cnt; void dfs(int x,int s) { if(x==4) { if(s==0) { cnt++; printf("找到一个,现在数目是%d\n",cnt); return; } else { // printf("没找到\n"); return; } } for(int i=0;i<n;i++) { int ss=s; if(!mark[i][x]) { ss+=a[i][x]; mark[i][x]=1; printf("dfs(%d,%d)\n",x+1,ss); dfs(x+1,ss); mark[i][x]=0; } } } int main() { while(~scanf("%d",&n)) { memset(mark,0,sizeof(mark)); cnt=0; for(int i=0;i<n;i++) scanf("%d%d%d%d",&a[i][0],&a[i][1],&a[i][2],&a[i][3]); dfs(0,0); printf("最终有%d个\n",cnt); } return 0; } /* 3 -2 2 1 -1 1 2 3 -3 9 9 9 -3 > 4 > 0 0 0 0 > 0 0 0 0 > 0 0 0 0 > 0 0 0 0 6 -45 22 42 -16 -41 -27 56 30 -36 53 -37 77 -36 30 -75 -46 26 -38 -10 62 -32 -54 -6 45 */ //freopen("1.txt", "r", stdin); //freopen("2.txt", "w", stdout); //**************************************
标签:
原文地址:http://www.cnblogs.com/wmxl/p/4734245.html