强训之【走方格的方案数和另类加法】

news2025/2/25 21:33:47

目录

  • 1.走方格的方案数
    • 1.1题目
    • 1.2思路讲解
    • 1.3代码展示
  • 2.另类加法
    • 2.1题目
    • 2.2思路讲解
    • 2.3代码展示
  • 3.选择题

1.走方格的方案数

1.1题目

链接: link
描述
请计算n*m的棋盘格子(n为横向的格子数,m为竖向的格子数)从棋盘左上角出发沿着边缘线从左上角走到右下角,总共有多少种走法,要求不能走回头路,即:只能往右和往下走,不能往左和往上走。
注:沿棋盘格之间的边缘线行走

输入描述:
输入两个正整数n和m,用空格隔开。(1≤n,m≤8)

输出描述:
输出一行结果

示例1
输入:
2 2

输出:
6

1.2思路讲解

要求一个n*m的棋盘中,从走上角到右下角有多少种方法。

我们先来看一下,分为n=1,m=1或者n=1,m>=1或者n>=1,m=1。
在这里插入图片描述
我们再来看,当n>=1,m>=1的时候。
当我们要从走上角到右下角的时候,走的步数就等于从(n-1,m)+(n,m-1)格子的步数。
比如我们要求一个3*3的格子,我们就要求右边第一个点,也就是右边的(n-1,m)的格子步数+要求下边第一个点,也就是下边的(n,m-1)的格子步数

因此我们总结出:n,m条路径的方案数=(n,m-1)条数+(n-1,m)的条数
知道,n=1,m>=1 或 n>=1,m=1这时就是终止条件

在这里插入图片描述
因此,我们使用递归,当(n=1,m>=1)或者 (n>=1,m=1)的时候就return,不是就
return (n-1,m)+(n,m-1);

1.3代码展示

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextInt()) { 
            int n = in.nextInt();
            int m = in.nextInt();
            int ret=func(n,m);
            System.out.println(ret);
        }
    }

    public static int func(int n,int m)
    {
        if(n==1 && m>=1)
        {
            return m+n;
        }
        else if(m==1 && n>=1)
        {
            return m+n;
        }

        return func(n-1,m)+func(n,m-1);
    }
}

2.另类加法

2.1题目

链接: link
描述
给定两个int A和B。编写一个函数返回A+B的值,但不得使用+或其他算数运算符。

测试样例:
1,2
返回:3

2.2思路讲解

这里我们使用到 位运算符
有两个总结:
1.二进制位异或的结果,就是两个数对应相加的结果,不考虑进位
2.二进制位与后 在后移一位,是两个数对应相加的结果,(只考虑进位)

给大家举个例子
a=1 b=2
0001 0010
a ^ b =0001^0010=0011=3

a&b=0001&0010 <<1 = 0000
此时与后,右移一位的结果为0,就说明此时异或的结果就是相加的结果

两个数相加,如果不需要进位的话,那么这两个数异或的值就是这两个数的和

比如 2+3
2=0010,3=0011
2^3=0010 ^ 0011=0001(不等于5)
2 & 3 =0010&0011=0010<<1=0100(不等于0,说明需要进位,此时异或的值不等于和)

这个时候我们就将ret=0001,sun=0100
将 a=0001,b=0100,再一次进行异或
a ^b=0001 ^ 0100=0101=5
a&b=0001&0100=0(值为0,将相当于此时的异或值就等于和)

我们可以看出,这个问题如果需要进位就需要考虑循环,那么条件是什么?
我们每一次将与后右移一位的值,赋值给B,判断B是否=0,如果等于0,就直接输出异或的值就可以了,因此我们的循环判断条件就是当B!=0时

2.3代码展示

import java.util.*;

public class UnusualAdd {
    public int addAB(int A, int B) {
        if(B==0)
        {
            return A;
        }
        while(B!=0)
        {
        int ret=A^B;
        int C=(A&B)<<1;
            A=ret;
            B=C;
        }
        return A;
    }
}

3.选择题

1.下面程序的输出是:(D)
String x=“fmn”;
x.toUpperCase();
String y=x.replace(‘f’,‘F’);
y=y+“wxy”;
System.out.println(y);
A FmNwxy
B fmnwxy
C wxyfmn
D Fmnwxy

这道题考查的是,字符串 x.toUpperCase();是小写的字母变为大写的字母,但是需要注意,这里变化后的是新建的一个字符串,而不是在原本的字符串上改变,因此x是不变的。
x.replace(‘f’,‘F’);是将小写字母f变为大写的F,此时x=Fmn,所以结果就是Fmnwxy

2.在 java 中,一个类可同时定义为许多同名的方法,这些方法的形式参数个数,类型或顺序各不相同,传回的值可能各不相同,这种面向对象的特性称为(D
A 隐藏
B 覆盖
C 重载
D 无此特性

重写:就是 重新写一遍的意思。其实就是在子类中把父类本身有的方法重新写一遍。子类继承了父类原有的方法,但有时子类并不想原封不动的继承父类中的某个方法,所以在方法名,参数列表,返回类型(除过子类中方法的返回值是父类中方法返回值的子类时)都相同的情况下, 对方法体进行修改或重写,这就是重写。但要注意子类函数的访问修饰权限不能少于父类的。
重载(Overload)
在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同甚至是参数顺序不同)则视为重载。同时,重载对返回类型没有要求,可以相同也可以不同,但不能通过返回类型是否相同来判断重载。

  1. 关于 JAVA 堆,下面说法错误的是(D)
    A 所有类的实例和数组都是在堆上分配内存的
    B 对象所占的堆内存是由自动内存管理系统回收
    C 堆内存由存活和死亡的对象,空闲碎片区组成
    D 数组是分配在栈中的

只要是new一个对象的,都是存储在堆上的

  1. 一个以“.java”为后缀的源文件(C
    A 只能包含一个public类,类名必须与文件名相同
    B 只能包含与文件名相同的public类以及其中的内部类
    C 只能有一个与文件名相同的public类,可以包含其他非public类(不考虑内部类)
    D 可以包含任意public类

一个JAVA文件可以有多个类,但是只能有一个public类,并且public类的名与文件名相同。

  1. JAVA语言的下面几种数组复制方法中,哪个效率最高?(B
    A for循环逐一复制
    B System.arraycopy
    C Arrays.copyOf
    D 使用clone方法

for循环是最慢的,以内每一次都要从0下标开始,然后到指定的位置,另外就是每一次都要判断是否达到数组最大的长度和进行一次额外的记录下标值的加发运算
System.arraycopy,是浅拷贝,对于引用类型来说,拷贝的是对象的引用,不是去新建一个新的对象。
在这里插入图片描述

6.()仅包含方法定义和常量值。(A
A 接口
B 变量
C 单元
D 成员

7.对文件名为Test.java的java代码描述正确的是(C)
class Person {
String name = “No name”;
public Person(String nm) {
name = nm;
}
}
class Employee extends Person {
String empID = “0000”;
public Employee(String id) {
empID = id;
}
}
public class Test {
public static void main(String args[]) {
Employee e = new Employee(“123”);
System.out.println(e.empID);
}
A 输出:0000
B 输出:123
C 编译报错
D 输出:No name
}

8.有关下述Java代码描述正确的选项是____。
public class TestClass {
private static void testMethod(){
System.out.println(“testMethod”);
}
public static void main(String[] args) {
((TestClass)null).testMethod();
}
}
A 编译不通过
B 编译通过,运行异常,报NullPointerException
C 编译通过,运行异常,报IllegalArgumentException
D 编译通过,运行异常,报NoSuchMethodException
E 编译通过,运行异常,报Exception
F 运行正常,输出testMethod

testMethod()是静态方法,类直接调用,所以不管对象是否调用都会执行,输出

9.下列java程序的输出结果为____。(B
public class Example{
String str=new String(“hello”);
char[]ch={‘a’,‘b’};
public static void main(String args[]){
Example ex=new Example();
ex.change(ex.str,ex.ch);
System.out.print(ex.str+" and ");
System.out.print(ex.ch);
}
public void change(String str,char ch[]){
str=“test ok”;
ch[0]=‘c’;

A hello and ab
B hello and cb
C hello and a
D test ok and ab
E test ok and cb
F test ok and c
}
}
在这里插入图片描述

10.在jdk1.5之后,下列 java 程序输出结果为______。(B
int i=0;
Integer j = new Integer(0);
System.out.println(i==j);
System.out.println(j.equals(i));
A true,false
B true,true
C false,true
D false,false
E 对于不同的环境结果不同
F 程序无法执行

i是基本类型,j是引用类型,但是在比较的时候会对j进行拆箱操作
用equals比较的时候会将i自动变为引用类型

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/427570.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第⑦讲:Ceph集群RGW对象存储核心概念及部署使用

文章目录1.RadosGW对象存储核心概念1.1.什么是RadosGW对象存储1.2.RGW对象存储架构1.3.RGW对象存储的特点1.4.对象存储中Bucket的特性1.4.不同接口类型的对象存储访问对比2.在集群中部署RadosGW对象存储组件2.1.部署RGW组件2.2.集群中部署完RGW组件后观察集群的信息状态2.3.修改…

【2023】Kubernetes之Pod与容器状态关系

目录简单创建一个podPod运行阶段&#xff1a;容器运行阶段简单创建一个pod apiVersion: v1 kind: pod metadata: name: nginx-pod spec:containers:- name: nginximages: nginx:1.20以上代码表示创建一个名为nginx-pod的pod资源对象。 Pod运行阶段&#xff1a; Pod创建后&am…

搜索引擎测试报告

文章目录一、项目背景二、项目功能三、测试目的四、测试环境五、测试计划1、功能测试2、自动化测试六、测试结果一、项目背景 java官方文档是我们在学习java语言中不可或缺的权威资料。相比于各种网站的Java资料&#xff0c;官方文档无论是语言表达还是组织方式都要更加全面和…

ThingsBoard开源物联网平台智慧农业实例快速部署教程(Ubuntu、CentOS适用)

ThingsBoard部署教程文档 文章目录ThingsBoard部署教程文档1. JDK环境安装2. 安装thingsBoard2.1 ThingsBoard软件包安装2.2 PostgreSQL安装2.3 PostgreSQL初始化配置3. 修改ThingsBord的配置4. 运行安装脚本测试5. 访问测试6. 导入一个仪表盘库6.1 导出仪表盘并导入自己的项目…

Spring —— Spring Boot 配置文件

JavaEE传送门JavaEE Spring —— Bean 作用域和生命周期 Spring —— Spring Boot 创建和使用 目录Spring Boot 配置文件Spring Boot 配置文件格式properties配置文件properties 基本语法properties 缺点yml 配置文件yml 基本语法yml 配置不同类型数据及 nullyml 配置对象yml…

【SQL Server】数据库开发指南(一)数据库设计

文章目录一、数据库设计的必要性二、什么是数据库设计三、数据库设计的重要性五、数据模型5.1 实体-关系&#xff08;E-R&#xff09;数据模型5.2 实体&#xff08;Entity&#xff09;5.3 属性&#xff08;Attribute&#xff09;5.5 关系&#xff08;Relationship&#xff09;六…

windows搭建ftp及原理(小白向)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录环境一、实验步骤1.1安装ftp二、ftp实验引发的思考1.简单阐述ftp的原理2.ftp建立的流程总结环境 windwos任意环境不需要server windows10 提示&#xff1a;以下是本…

〖Python网络爬虫实战⑤〗- Session和Cookie介绍

订阅&#xff1a;新手可以订阅我的其他专栏。免费阶段订阅量1000python项目实战 Python编程基础教程系列&#xff08;零基础小白搬砖逆袭) 说明&#xff1a;本专栏持续更新中&#xff0c;目前专栏免费订阅&#xff0c;在转为付费专栏前订阅本专栏的&#xff0c;可以免费订阅付费…

Linux的诞生过程

个人简介&#xff1a;云计算网络运维专业人员&#xff0c;了解运维知识&#xff0c;掌握TCP/IP协议&#xff0c;每天分享网络运维知识与技能。座右铭&#xff1a;海不辞水&#xff0c;故能成其大&#xff1b;山不辞石&#xff0c;故能成其高。个人主页&#xff1a;小李会科技的…

走近阿里Apsara Clouder云计算的蓝图

文章目录一&#xff1a;"什么是Apsara Clouder 云计算"二&#xff1a;"Apsara Clouder 云计算"厉害在哪里&#xff1f;三&#xff1a;"Apsara Clouder 云计算"认证一&#xff1a;“什么是Apsara Clouder 云计算” &#x1f496;&#x1f496; A…

【云原生Docker】09-Docker网络详解

【云原生|Docker】09-Docker网络详解 文章目录【云原生|Docker】09-Docker网络详解前言网络详解bridge网络基于bridge网络的容器访问外部网络外部网络访问基于bridge网络的容器host网络none网络container网络自定义网络自定义bridge网络容器的互通两个相同的bridge网络容器互通…

多层多输入的CNN-LSTM时间序列回归预测(卷积神经网络-长短期记忆网络)——附代码

目录 摘要&#xff1a; 卷积神经网络(CNN)的介绍&#xff1a; 长短期记忆网络&#xff08;LSTM&#xff09;的介绍&#xff1a; CNN-LSTM&#xff1a; Matlab代码运行结果&#xff1a; 本文Matlab代码数据分享&#xff1a; 摘要&#xff1a; 本文使用CNN-LSTM混合神经网…

spring快速连接mybatis

spring快速连接mybatisspring整合mybatis1.maven依赖配置2.数据库sql设计3.数据库连接配置4.实体类设计5.Dao层开发6.SqlMapConfig.xml7.运行程序进行crudspring整合mybatis 1.maven依赖配置 配置pom.xml如下 <?xml version"1.0" encoding"UTF-8"?…

【机器学习】P6 逻辑回归的 损失函数 以及 梯度下降

逻辑回归的损失函数 以及 梯度下降逻辑回归的损失函数逻辑回归的 Loss逻辑回归的 Cost逻辑回归的梯度下降总公式推导公式梯度下降动画效果展示Reference逻辑回归的损失函数 逻辑回归的 Loss 逻辑回归是一种用于二分类问题的监督学习算法&#xff0c;其损失函数采用交叉熵&…

ChatGPT研究报告:AIGC带来新一轮范式转移

本文约4000字&#xff0c;目标是快速建立AIGC知识体系&#xff0c;含有大量的计算专业名词&#xff0c;建议阅读同时扩展搜索。 一、行业现状 1、概念界定 区别于PGC与UGC不同的&#xff0c;AIGC是利用人工智能技术自动生成内容的新型生产方式。 2、数据模态 按照模态区分&a…

【计算机网络-网络层】路由选择协议

文章目录1 路由器与路由选择1.1 路由器1.2 路由表&#xff08;RIB 表&#xff09;1.2.1 路由表项1.2.2 动态路由1.2.3 静态路由1.2.4 直连路由1.3 转发表&#xff08;FIB 表&#xff09;1.4 自治系统 AS2 内部网关协议 IGP——路由信息协议 RIP2.1 RIP 规定2.2 RIP 的工作原理2…

GPT系列论文

目录 GPT 无监督预训练 有监督微调 如何将模型应用于下游任务&#xff1f; 试验结果 GPT-2 摘要 Introduction Approach 数据集&模型 试验结果 GPT-3 核心点 名词解释 few-shot做法图示 数据集 GPT 由无监督预训练有监督微调组成 无监督预训练 有监督微调 …

ICLR 2023 | 达摩院开源轻量人脸检测DamoFD

团队模型、论文、博文、直播合集&#xff0c;点击此处浏览 一、论文 本文介绍我们被机器学习顶级国际会议ICLR 2023接收的论文 “DamoFD: Digging into Backbone Design on Face Detection" 论文链接&#xff1a;https://openreview.net/pdf?idNkJOhtNKX91 开源代码&a…

云原生_kubernetes(k8s)介绍

目录 一、应用部署方式演变 二、k8s介绍 三、k8s的组件 四、k8s中的概念 五、k8s资源管理方式 1、命令式对象管理 2、命令式对象配置 3、声明式对象配置 一、应用部署方式演变 在部署应用程序的方式上&#xff0c;主要经历了三个时代&#xff1a; 1、物理机部署&#…

Vue 核心(一)

文章目录Vue 核心&#xff08;一&#xff09;一、 Vue 简介1、 概述2、 学前准备3、 第一个程序二、 模板语法三、 数据绑定四、 MVVM 模型五、 数据代理1、 defineProperty2、 理解数据代理3、 Vue中的数据代理六、 事件处理1、 事件的基本使用2、 键盘事件七、 计算属性与监视…