#include<stdio.h>
#include<cstring>

int line,row = 0;

int maxn = -1;

int m[1000][1000];

int main()
{
	
	int n;
	scanf("%d",&n);
	
	if(n <= 0 || n > 1000){
		
		printf("nan");
		
		return 0;
	}
	
	memset(m, 0, sizeof(m));
	
	m[0][n / 2] = 1;
	
	line = n / 2;
	
	for(int i = 2; i <= n * n; i++){
		
		if(row == 0 && line != n - 1){
			
			row = n - 1;
			line++;
			
			m[row][line] = i;
		}
		
		else if(line == n - 1 && row != 0){
			
			row--;
			line = 0;
			
			m[row][line] = i;
		}
		
		else if(line == n - 1 && row == 0){
			
			row++;
			
			m[row][line] = i;
		}
		
		else{
			
			if(m[row - 1][line + 1] == 0){
				
				row--;
				line++;
				
				m[row][line] = i;
			}
			
			else{
				
				row++;
				
				m[row][line] = i;
			}
		}
	}
	
	for(int i = 0; i < n; i++){
		
		if(m[n - 1][i] > maxn){
			
			maxn = m[n - 1][i];
		}
	}
	
	printf("%d",maxn); 
	
	return 0;
}

这个代码的作用是求n的2次幂(基于幻方原理)

说实话 就这个代码 你别看它很长 它性能也拉啊

0 comments

No comments so far...