本文主要是介绍Hdu 1998Nyoj 734 奇数阶魔方,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目链接:点击打开链接
据说这是组合数学中的一道例题。
题目意思很简单,一开始,没看出来,什么意思。以为是一道找规律题。
其实就是一模拟题,从1---n^2,一直向右上方填数就好。
两个问题:
1.越界问题。
2.已填数这么办?填入该填数的前一个的下方。
代码:
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;const int N=22;
int map[N][N];
int main(){int T;scanf("%d",&T);while(T--){memset(map,0,sizeof(map));int n;scanf("%d",&n);int i=1,j=(n+1)/2,k=1;map[i][j]=k++;while(k<=n*n){//first out of the map;i=i-1;j=j+1;if(i<=0) i=n;if(j>n) j=1;//second is filledif(map[i][j]!=0) {i=i+2;j=j-1;}if(i>n) i=i-n;if(j<=0) j=n;map[i][j]=k++;}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++)printf("%4d",map[i][j]);printf("\n");}}return 0;
}
这是组合数学中的一道例题,我想,应该系统的学习一下一些知识。不能盲目的走了。恩。
这篇关于Hdu 1998Nyoj 734 奇数阶魔方的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!