关闭

2531

196人阅读 评论(0) 收藏 举报
分类:
#include<iostream>

using namespace std;

const int SIZE = 21;

int QA[SIZE] = {0};
int QB[SIZE] = {0};
int map[SIZE][SIZE] = {0};
int N = 0;
int tem = 0;
int sum = 0;

void dfs(int a, int b, int step);

int main()
{
	freopen("input.txt", "r", stdin);
	setbuf(stdout, NULL);

	cin >> N;

	for(int i = 1; i <= N; i++)
	{
		for(int j = 1; j <= N; j++)
		{
			cin >> map[i][j];
		}
	}

	QA[0] = 1;
	
	dfs(1, 0, 1);

	cout << sum << endl;
	return 0;
}

void dfs(int a, int b, int step)
{
	if(step == N)
	{
		tem = 0;
		for(int i = 0; i < a; i++)
		{
			for(int j = 0; j < b; j++)
			{
				tem += map[QA[i]][QB[j]];
			}
		}
		if(tem > sum)
		{
			sum = tem;
		}
		return;
	}

	step++;

	QA[a] = step;
	dfs(a+1, b, step);

	QB[b] = step;
	dfs(a, b+1, step);
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:47616次
    • 积分:1425
    • 等级:
    • 排名:千里之外
    • 原创:93篇
    • 转载:0篇
    • 译文:0篇
    • 评论:15条
    我的微信公众号
      我的微信公众号
      欢迎大家关注我的微信公众号「林里少年」, 一个安卓手机软件开发的通信人,记录技术点滴,也是摄影爱好者!
    最新评论