zoukankan      html  css  js  c++  java
  • Algorithm Gossip(51) 2(2N+1)魔方阵 (END)

    前言

    This Series aritcles are all based on the book 《经典算法大全》; 对于该书的所有案例进行一个探究和拓展,并且用python和C++进行实现; 目的是熟悉常用算法过程中的技巧和逻辑拓展。

    提出问题

    51.Algorithm Gossip: 2(2N+1)魔方阵
    有兴趣的根据前面两个例子。猜想这个的详细解法; 我也懒得描述了; 终于到了本系列的最后一篇文章。

    分析和解释

    代码

    #include <stdio.h>
    #include <stdlib.h>
    #define N 6
    #define SWAP(x,y) {int t; t = x; x = y; y = t;}
    void magic_o(int [][N],int);
    void exchange(int[][N],int);
    int main(void) {
    	int square[N][N]= {0};
    	int i, j;
    	magic_o(square,N/2);
    	exchange(square,N);
    	for(i = 0; i < N;i++) {
    		for(j = 0; j < N;j++)
    			printf("%2d ", square[i][j]);
    		printf("
    ");
    		}
    	return 0;
    	}
    void magic_o(int square[][N],int n) {
    	int count, row, column;
    	row = 0;
    	column = n / 2;
    	for(count = 1; count <= n*n; count++){
    		square[row][column]= count; // 填 A
    		square[row+n][column+n]= count+ n*n; // 填 B
    		square[row][column+n]= count+ 2*n*n; // 填C
    		square[row+n][column] = count+ 3*n*n; // 填D
    		if(count % n == 0)
    			row++;
    		else {
    			row = (row == 0) ? n - 1 : row - 1 ;
    			column = (column == n-1) ? 0 : column + 1;
    			}
    		}
    	}
    void exchange(intx[][N],int n) {
    	int i, j;
    	int m = n / 4;
    	int m1 = m - 1;
    	for(i = 0; i < n/2;i++) {
    		if(i != m) {
    			for(j = 0; j < m;j++) // 处理规则 1
    				SWAP(x[i][j],x[n/2+i][j]);
    			for(j = 0; j < m1;j++) // 处理规则 2
    				SWAP(x[i][n-1-j], x[n/2+i][n-1-j]);
    			}
    		else { // 处理规则 3
    			for(j = 1; j <= m;j++)
    				SWAP(x[m][j], x[n/2+m][j]);
    			for(j = 0; j < m1;j++)
    				SWAP(x[m][n-1-j],x[n/2+m][n-1-j]);
    			}
    		}
    	}
    

    拓展和关联

    后记

    参考书籍

    • 《经典算法大全》
    • 维基百科
  • 相关阅读:
    【Windows】Windows服务管家婆之Service Control Manager
    【Python】python文件名和文件路径操作
    【Python】python 调用c语言函数
    IIS 之 HTTP Error 404.2 – Not Found(ISAPI 和 CGI 限制)
    IIS 之 HTTP错误 404.17
    IIS 之 HTTP 错误 404.3
    IIS 之 HTTP 错误 403.14
    IIS 之 打开/关闭 Internet 信息服务
    Wcf 之 配置文件解析
    Web Service 之 开发、部署
  • 原文地址:https://www.cnblogs.com/actanble/p/6711273.html
Copyright © 2011-2022 走看看