码迷,mamicode.com
首页 > 其他好文 > 详细

HDU4708 Rotation Lock Puzzle 不错的模拟题

时间:2014-11-25 23:47:35      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:style   io   ar   os   sp   for   数据   on   as   

题意:给你一个n*n的矩阵,n为奇数,以最中心的一个数为基准,可以把这个矩阵 看成一圈一圈的,每一圈都可以逆时针或者顺时针旋转,每一次旋转每个元素只能移动一个单元格,求经过每一圈的旋转矩阵两个对角线和最大的值,并求出最少旋转次数


一圈一圈的处理,注意最中心的那个数不用管,就它一个,那么这个矩阵只有n/2圈需要操作,对于每一圈的元素都放在一个一维数组里面,然后枚举这个数组里的每一个元素为开头,统计接下来的三个数,求和比较大小即可,因为有逆时针的,所以顺时针时从开头开始枚举,逆时针则从尾部开始枚举,这题数据貌似有些烂,


int n;

int mp[15][15];


void init() {
	memset(mp,0,sizeof(mp));
}

bool input() {
	while(cin>>n,n) {
		for(int i=0;i<n;i++)
			for(int j=0;j<n;j++)
				cin>>mp[i][j];
		return false;
	}
	return true;
}

void cal() {
	int ans = 0;
	int cnt = 0;
	int nnum = n/2;
	int aa[100 + 55];
	for(int k=0;k<nnum;k++) {
		memset(aa,0,sizeof(aa));
		int pos = 0;
		int sum = 0;
		int now = 0;
		for(int j=k;j<n - k;j++)aa[pos++] = mp[k][j];
		for(int i=k + 1;i<n - k;i++)aa[pos++] = mp[i][n - k - 1];
		for(int j=n - k - 2;j >k;j--)aa[pos++] = mp[n - k - 1][j];
		for(int i=n - k - 1;i>k;i--)aa[pos++] = mp[i][k];
		for(int i=0;i<=(pos + 1)/2;i++) {
			int tmp = 0;
			tmp = aa[i%pos] + aa[(i+(n-2*k-1))%pos] + aa[(i+2*(n-2*k-1))%pos] + aa[(i+3*(n-2*k-1))%pos];
			if(tmp > sum) {
				sum = tmp;
				now = i;
			}
			if(tmp == sum) {
				if(i < now)
					now = i;
			}
		}
		for(int i=pos-1,mark = 0;mark <=(pos+1)/2;i--) {
			int tmp = 0;
			tmp = aa[i%pos] + aa[(i+(n-2*k-1))%pos] + aa[(i+2*(n-2*k-1))%pos] + aa[(i+3*(n-2*k-1))%pos];
			if(tmp > sum) {
				sum = tmp;
				now = pos - i;
			}
			if(tmp == sum) {
				if(pos - i < now)
					now = pos - i;
			}
			mark++;
		}
		ans += sum;
		cnt += now;
	}
	ans += mp[n/2][n/2];
	cout<<ans<<" "<<cnt<<endl;
}

void output() {

}

int main() {
	while(true) {
		init();
		if(input())return 0;
		cal();
		output();
	}
	return 0;
}


HDU4708 Rotation Lock Puzzle 不错的模拟题

标签:style   io   ar   os   sp   for   数据   on   as   

原文地址:http://blog.csdn.net/yitiaodacaidog/article/details/41487529

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!