首页 > 其他分享 >打卡9.(偏移量)

打卡9.(偏移量)

时间:2023-05-08 09:02:38浏览次数:30  
标签:Scanner int System 偏移量 dx dy 打卡

img #图解 img #代码 ##java代码实现

import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt(),m=sc.nextInt();
        int[][] q=new int[n][m];
        //偏移量
        int[] dx={-1,0,1,0};
        int[] dy={0,1,0,-1};
        //初始化条件,d=1代表往右走
        int x=0,y=0,d=1;
        for(int i=1;i<=n*m;i++){
            q[x][y]=i;
            int a=x+dx[d],b=y+dy[d];//开始挪动
            if(a<0||a>=n||b<0||b>=m||q[a][b]!=0)//判断神魔时候撞墙,一种是出借,另一种是到了原来填过的位置
            {
                d=(d+1)%4;
                a=x+dx[d];
                b=y+dy[d];
            }
            x=a;
            y=b;
        }
        for(int[] res:q){
            for(int val:res){
                System.out.printf("%d ",val);
            }
            System.out.println();
        }
    }
}

c++代码实现

#include<iostream>
using namespace std;
const int N = 110;
int q[N][N];
int n, m;
int main()
{
	cin >> n >> m;
	int dx[] = { -1,0,1,0 }, dy[] = { 0,1,0,-1 };
	int x = 0, y = 0, d = 1;
	for (int i = 1; i <= n * m; i++)
	{
		q[x][y] = i;
		int a = x + dx[d], b = y + dy[d];
		if (a < 0 || a >= n || b < 0 || b >= m || q[a][b]) {
			d = (d + 1) % 4;
			a = x + dx[d] , b = y + dy[d];
		}
		x = a , y = b;
	}
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {
			cout << q[i][j] << " ";
		}
		cout << endl;
	}
	return 0;
}

标签:Scanner,int,System,偏移量,dx,dy,打卡
From: https://www.cnblogs.com/gyg1222/p/17380630.html

相关文章

  • 5月7日打卡
    题目描述:微博上有个自称“大笨钟V”的家伙,每天敲钟催促码农们爱惜身体早点睡觉。不过由于笨钟自己作息也不是很规律,所以敲钟并不定时。一般敲钟的点数是根据敲钟时间而定的,如果正好在某个整点敲,那么“当”数就等于那个整点数;如果过了整点,就敲下一个整点数。另外,虽然一天有24小时,......
  • 5.7打卡
    一、问题描述:如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。求3000以内的全部亲密数。二、设计思路:根据问题描述,该问题可以转化为:给定整数A,判断A是否有亲密数。为解决该问题,首先定义变量a,并为其赋初值为......
  • 2023.5.7编程一小时打卡
    一、问题描述:编写程序提示用户输入一个班级中的学生人数n,再依次提示用户输入n个人在课程A中的考试成绩,然后计算出平均成绩显示出来。二、解题思路:首先,定义一个vector类型的成员,通过用户输入的人数进行对vector的数据添加,最后进行加和求其平均值。 三、代码实现:1#include......
  • 第16天打卡
    问题: 算法设计:有问题可知,一共13张牌,数记次数就是那一张,相当于每个盒子放一张牌,这个盒子在第几个数上就放第几张牌,还要注意拿出来的牌要跳过,提用循环即可,13张牌循环13次,找到空盒子并放入对应的牌即可 源代码:#include<stdio.h>intmain(){inta[14];inti,j=1,n;for(i=......
  • 每日打卡一小时(第二十一天)
    一.问题描述以平面图形类Plane为基类公有派生三角形类Triangle,main(void)函数完成对其的测试。Point类结构说明:Point类的数据成员包括:①私有数据成员:X坐标x(double型),Y坐标y(double型)。Point类成员函数包括:①有参构造函数Point(double,double)和拷贝构造函数Point(const......
  • 5月6日打卡
    例4-4题目描述:类的组合,线段类。我们使用一个类来描述线段,使用4.3节中Point类的对象来表示端点。这个问题可以用类的组合来解决,使Line类包括Point类的两个对象p1和p2,作为其数据成员。Line类具有计算线段长度的功能,在构造函数中实现。代码部分:#include<iostream>#include<cm......
  • 第15天打卡
    问题:算法设计:直接暴力查找;运用多个判断语句即可源代码:#include<stdio.h>intmain(){longn,sum,i;while(scanf("%ld",&n)!=EOF){sum=0;for(i=7;i<=n;i++)if(i%7==0)if(i%6==5)if(i%5==4)if(i%3==2){sum++;printf("%ld\n",i);}printf("......
  • 每天打卡一小时 第二十天 承接十九天
    这段代码实现了两个大数相加的功能,其中BigNum是一个自定义的大数类,它的数据成员num是一个字符数组,用于存储大数。下面是对代码的解释:1.首先判断两个大数的符号,如果一个为正数,另一个为负数,则通过转换为减法的方式实现加法。2.定义一个新的BigNum对象s,用于存储相加后的结果;另外定......
  • 每日打卡
    完数问题:问题描述:一个等于因子之和的数称为完数,求一定范围内完数的数量代码:#include<stdio.h> intmain() {       inti,j,s,n;       printf("请选择输入上限:");       scanf("%d",&n);              for(i=2;i<=n;i++)  ......
  • 5.6打卡
    一、问题描述:一个口袋中放有12个球,已知其中3个是红的,3个是白的,6个是黑的,现从中任取8个,问共有多少种可能的颜色搭配?二、设计思路:根据问题描述可设任取的8个球中红球为m个,白球为n个,则黑球为8-m-n个。又已知12个球中有3个红球,3个白球,6个黑球,因此,m的取值范围为[0,3],n的取值范围因此为[......