首页 > 其他 > 详细

cogs 1811. [NOIP2014]螺旋矩阵

时间:2017-07-23 10:54:54      阅读:248      评论:0      收藏:0      [点我收藏+]

★   输入文件:matrixc.in   输出文件:matrixc.out   简单对比

时间限制:1 s   内存限制:256 MB

【题目描述】

技术分享

技术分享

 

MLE:

#include<iostream>
#include<cstdio>
#include<algorithm>

using namespace std;
const int N=10010;

long long a[N][N];
int n,x,y;

int main()
{
	freopen("matrixc.in","r",stdin);
	freopen("matrixc.out","w",stdout);
	scanf("%d%d%d",&n,&x,&y);
	long long tot=0;
	int i=1,j=0;
	long long nn=n*n;
	while(1)
	{
		while((++j)<=n&&!a[i][j])
			a[i][j]=(++tot);
  		j--;
		while((++i)<=n&&!a[i][j])
			a[i][j]=(++tot);
		i--;
		while((--j)>=1&&!a[i][j])
			a[i][j]=(++tot);
		j++;
		while((--i)>=1&&!a[i][j])
			a[i][j]=(++tot);
	    i++;
		if(tot>=nn)
		{
			printf("%d",a[x][y]);
			return 0;
		}
	}
	return 0;
	
}

找规律:

#include<stdio.h>
int main()
{	freopen("matrixc.in","r",stdin);
	freopen("matrixc.out","w",stdout);
    int n,i,j;
    int m;//m表示总共的层数 
    int k,p,q;//循环变量 
    int flag=0;//标志性变量:等于0表示尚未循环到目标元素(i,j) 
    int t;
     int len;
     
    scanf("%d%d%d",&n,&i,&j);
    m=(n+1)/2;  //m表示总共的层数 
    t=1;        //t表示要填进数组的数字
    for(k=1;k<=m&&flag==0;k++)
    {
        p=k,q=k;      //(k,k)是第k层左上角坐标点
        len=n-2*(k-1);//表示当前层中每一条边的元素个数 
        for(;q<=(k+len-1);q++)//填充当前层的顶边 
        {
            if(p==i&&q==j)
            {
                printf("%d\n",t);
                return 0;
            }
            t++;
        }
        q--;
        p++;
        for(;p<=(k+len-1);p++)//填充当前层的右边 
        {
            if(p==i&&q==j)
            {
                printf("%d\n",t);
                return 0;
            }
            t++;
        }
        p--;
        q--;
        for(;q>=k;q--)//填充当前层的下边
        {
            if(p==i&&q==j)
            {
                printf("%d\n",t);
                return 0;
            }
            t++;
        }
        q++;
        p--;
        for(;p>k;p--)//填充当前层的左边
        {
            if(p==i&&q==j)
            {
                printf("%d\n",t);
                return 0;
            }
            t++;
        }
    }
    return 0;
}

  

cogs 1811. [NOIP2014]螺旋矩阵

原文:http://www.cnblogs.com/lyqlyq/p/7223674.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!