3380:练65.3 螺旋矩阵

3380:练65.3  螺旋矩阵

信息学奥赛一本通-编程启蒙(C++版)在线评测系统




#include <bits/stdc++.h>
using namespace std;
int n,x,y;
int dfs(int n,int x,int y,int cnt)
{
	if(x==1) return y+cnt;
	if(y==n) return n+x-1+cnt;
	if(x==n) return 2*n-1+n-y+cnt;
	if(y==1) return 3*n-2+n-x+cnt;
	return dfs(n-2,x-1,y-1,cnt+4*(n-1));
}
int main()
{
	cin>>n>>x>>y;
	cout<<dfs(n,x,y,0);
	return 0;
}


/*
P2239 螺旋矩阵
https://www.luogu.com.cn/problem/P2239

1967:【14NOIP普及组】螺旋矩阵-AC
http://ybt.ssoier.cn:8088/problem_show.php?pid=1967
*/
#include<bits/stdc++.h>
#define R register 
using namespace std;
//快读 
inline void in(int &x) 
{
    int f=1;x=0;char s=getchar();
    while(!isdigit(s)){if(s=='-')f=-1;s=getchar();}
    while(isdigit(s)){x=x*10+s-'0';s=getchar();}
    x*=f;
}
int n,x,y,ans;
int main( void )
{
    in(n),in(x),in(y);
    //如果刚开始的话x,y就满足四条规律.
    //我们会在第一次输出答案,此时ans为0,无影响.
    here:;
    if( x == 1 )printf("%d",y+ans);
    else if( y == n ) printf("%d",n+x-1+ans);
    else if( x == n ) printf("%d",3*n-y-1+ans);
    else if( y == 1 ) printf("%d",4*n-x-2+ans);
    else
    {
        ans+=4*n-4;
        x--,y--,n-=2;
        goto here;
        //这句话达到了递归的效果。
        //我们的程序运行到这一步会到达上面的here,即再度执行这些if语句.
    }
}



 




蓝桥STEMA竞赛Python模块(23年10月)

蓝桥STEMA竞赛Python模块(23年10月)_哔哩哔哩_bilibili

NOI题库 python题解

https://blog.csdn.net/dllglvzhenfeng/category_11601976.html




《信息学奥赛一本通 编程启蒙C++版》3001-3005(5题)

《信息学奥赛一本通 编程启蒙C++版》3001-3005(5题)_一本通启蒙版 pdf-CSDN博客

《信息学奥赛一本通 编程启蒙C++版》3006-3010(5题)

《信息学奥赛一本通 编程启蒙C++版》3006-3010(5题)_信息学一本通3006-CSDN博客

信息学奥赛一本通·编程启蒙 C++版 3001-3010(10题)

信息学奥赛一本通·编程启蒙 C++版 3001-3010(10题)_信息学奥赛一本通 训练指导 题目-CSDN博客

《信息学奥赛一本通 编程启蒙C++版》3011-3015(5题)

《信息学奥赛一本通 编程启蒙C++版》3011-3015(5题)_一本通-编程启蒙c++代码答案-CSDN博客

《信息学奥赛一本通 编程启蒙C++版》3016-3020(5题)

《信息学奥赛一本通 编程启蒙C++版》3016-3020(5题)_一本通3016-CSDN博客

信息学奥赛一本通·编程启蒙 C++版 3011-3020(10题)

信息学奥赛一本通·编程启蒙 C++版 3011-3020(10题)_信息学奥赛一本通c++答案-CSDN博客

《信息学奥赛一本通 编程启蒙C++版》3021-3025(5题)

《信息学奥赛一本通 编程启蒙C++版》3021-3025(5题)_信息学奥赛c++编程3031答案-CSDN博客

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dllglvzhenfeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值