HDU4608+模拟

简单的模拟题。

暴力枚举

 1 /*

 2 模拟

 3 */

 4 #include<algorithm>

 5 #include<iostream>

 6 #include<string.h>

 7 #include<stdlib.h>

 8 #include<stdio.h>

 9 #include<math.h>

10 #include<queue>

11 #include<stack>

12 #include<map>

13 #include<set>

14 using namespace std;

15 typedef long long int64;

16 //typedef __int64 int64;

17 typedef pair<int64,int64> PII;

18 #define MP(a,b) make_pair((a),(b)) 

19 const int inf = 0x3f3f3f3f;

20 const double pi=acos(-1.0);

21 const int dx[]={1,-1,0,0};

22 const int dy[]={0,0,1,-1};

23 const double eps = 1e-8;

24 const int maxm = 1005;

25 const int maxn = 25;

26 

27 int num[ maxn ][ maxn ];

28 

29 int main(){

30     //freopen( "in.txt","r",stdin );

31     int n;

32     while( scanf("%d",&n),n ){

33         memset( num,0,sizeof( num ) );

34         for( int i=1;i<=n;i++ )

35             for( int j=1;j<=n;j++ )

36                 scanf("%d",&num[i][j]);

37         int cnt = 0;

38         int sum = 0;

39         int CNT = n;

40         for( int loop=1;loop<=(n/2);loop++ ){

41             //int x = loop;

42             //int y = loop;

43             //printf("loop = %d\n",loop);

44             int lux = loop,luy = loop;

45             int ldx = loop+CNT-1,ldy = loop;

46             int rux = loop,ruy = loop+CNT-1;

47             int rdx = loop+CNT-1,rdy = loop+CNT-1;

48             int ti = CNT - 1 ;

49             int cc = 0;

50             int temp_sum = 0;

51             int temp_cnt = 0;

52             //bool f = false;

53             while( cc<ti ){

54                 int temp = 0;

55                 //if( f==false ){

56                 //    f = true;

57                 //    ti -- ;

58                 //}

59                 //printf("(%d,%d) (%d,%d) (%d,%d) (%d,%d)\n",lux,luy,rux,ruy,ldx,ldy,rdx,rdy);

60                 temp = num[lux][luy] + num[rux][ruy] + num[ldx][ldy] + num[rdx][rdy];            

61                 if( temp>temp_sum ){

62                     temp_sum = temp;

63                     temp_cnt = min( cc,ti-cc );

64                 }

65                 else if( temp==temp_sum ){

66                     temp_cnt = min( temp_cnt,min( cc,ti-cc ) );

67                 }

68                 cc ++ ;

69                 luy ++ ;

70                 rux ++ ;

71                 rdy -- ;

72                 ldx -- ;

73             }

74             CNT -= 2;

75             sum += temp_sum;

76             cnt += temp_cnt;

77         }

78         printf("%d %d\n",sum+num[(n/2)+1][(n/2)+1],cnt);

79     }

80     return 0;

81 }
View Code

 

你可能感兴趣的:(HDU)