poj2531

 1 #include <iostream>
 2 using namespace std;
 3 #define SIZE 21
 4 int map[SIZE][SIZE];
 5 int n=0;
 6 int maxnum=0;
 7 int node[SIZE];
 8 void findmax(int step,int num);
 9 int main()
10 {
11     cin >> n;                                                                                                   
12     for(int i=0;i<n;i++)
13     {
14         for(int j=0;j<n;j++)
15         {
16             cin >>map[i][j];
17         }
18     }
19     for(int i=0;i<n;i++)
20     {
21         node[i]=1;
22     }
23     findmax(0,0);
24     cout <<maxnum<<endl;
25     return 0;
26 }
27 void findmax(int step,int num)
28 {
29     int num_a=num;
30     if(step==n)
31     {
32         return;
33     }
34     node[step]=0;
35     
36     for(int i=0;i<n;i++)
37     {
38         if(node[i]==0)
39         {
40             num_a-=map[step][i];
41         }
42         else
43         {
44             num_a+=map[step][i];
45         }
46     }
47     if(num_a>maxnum)
48     {
49         maxnum=num_a;
50     }
51     for(int i=step+1;i<n;i++)
52     {
53         if(num_a>num)
54         {
55             findmax(i,num_a);
56             node[i]=1;        
57         }
58     }
59 }

 

posted @ 2017-01-24 14:43  jintg  阅读(146)  评论(0)    收藏  举报