T1191,T1142,T1312,T1957

news/2024/11/29 8:55:47/

T1191,T1142,T1312,T1957

  • T1191
  • T1142
  • T1312
  • T1957

T1191

一个笼子里面关了鸡和兔子(鸡有 2 只脚,兔子有 4 只脚,没有残疾的)。已经知道了笼子里面脚的总数 a,问笼子里面至少有多少只动物,至多有多少只动物。

解析:分析知 总数a 是 2 的倍数,鸡兔同笼才有解法 否则 无解
假如 a % 2 == 0,则最大数量 就是全鸡 a / 2,
假如 (temp = a / 2) % 2 == 0,则最小数量 就是全兔 temp / 2,否则最小数量就是 一鸡全兔 (temp - 1) / 2 + 1

package com.java3.ch4;import java.util.Scanner;public class T1191 {public static void main(String[] args) {Scanner scan = new Scanner(System.in);int a = scan.nextInt();int maxAmount = 0;int minAmount = 0;if(a % 2 == 0){int temp = a / 2;maxAmount = temp;if(temp % 2 == 0){minAmount = temp / 2;}else{minAmount = (temp - 1) / 2 + 1;}}System.out.println(minAmount + " " + maxAmount);}
}
20
5 10

T1142

幻方是一个很神奇的N×N 矩阵,它的每行、每列与对角线,加起来的数字和都是相同的。我们可以通过以下方法构建一个幻方。(阶数为奇数)

第一个数字写在第一行的中间

下一个数字,都写在上一个数字的右上方:

  • 如果该数字在第一行,则下一个数字写在最后一行,列数为该数字的右一列
  • 如果该数字在最后一列,则下一个数字写在第一列,行数为该数字的上一行
  • 如果该数字在右上角,或者该数字的右上方已有数字,则下一个数字写在该数字的下方

解析:使用 int型的二维数组来存储这个幻方,已知幻方存储数据时 下一个数字 依赖于 上一个数字插入的行数和列数,并且给出第一次插入数据的行数和列数,构造Recode类来记录上一个数字插入的行数和列数,并通过在插入下一个数字后 修改行数和列数,

package com.java3.ch4;import java.util.Scanner;public class T1142 {public static void main(String[] args) {Scanner scan = new Scanner(System.in);int N = scan.nextInt();int orderOfMatrix = 2*N - 1;int[][] array = new int[orderOfMatrix][orderOfMatrix];Recode r = new Recode();//第一次插入array[0][orderOfMatrix / 2] = 1;r.setRow(0);r.setLine(orderOfMatrix / 2);//插入数据for(int i = 2;i <= (2*N -1) * (2*N -1);i++){writeArray(array,orderOfMatrix,r,i);}//输出数据for(int i = 0; i< orderOfMatrix;i++){for(int j = 0; j< orderOfMatrix;j++){System.out.print(array[i][j] + " ");}System.out.println();}}public static void writeArray(int[][] arr, int orderOfMatrix, Recode r, int values){/*arr:待填充数据的数组orderOfMatrix:矩阵的阶数r:Recode类的实例 其中row,line属性记录上一次插入数值的行数和列数values:当前正准备插入的数值*/int row = r.getRow();int line = r.getLine();//如果该数字在第一行,则下一个数字写在最后一行,列数为该数字的右一列int newRow = (row == 0)?(orderOfMatrix - 1):(row - 1) % orderOfMatrix;//如果该数字在最后一列,则下一个数字写在第一列,行数为该数字的上一行int newLine = (line + 1) % orderOfMatrix;//如果该数字在右上角,或者该数字的右上方已有数字,则下一个数字写在该数字的下方boolean isUpperRight = (row == 0) &&(line == (orderOfMatrix - 1));if(isUpperRight || arr[newRow][newLine] != 0){newRow = (row + 1) % orderOfMatrix;newLine = line;arr[newRow][newLine] = values;}else{arr[newRow][newLine] = values;}r.setRow(newRow);r.setLine(newLine);}
}class Recode{int row;int line;public int getRow() {return row;}public void setRow(int row) {this.row = row;}public int getLine() {return line;}public void setLine(int line) {this.line = line;}
}
3
17 24 1 8 15 
23 5 7 14 16 
4 6 13 20 22 
10 12 19 21 3 
11 18 25 2 9 

T1312

考试的时候老师最讨厌有人抄袭了。自从有了电子评卷,老师要查找雷同卷,就容易多了,只要将两个人的答案输入计算机,进行逐个字符的比对,把相同的位置都找出来,就一目了然了。

解析:使用 scan.nextLine() 接受数据 去循环长度等于较短字符串的长度 分别比较每个字符是否相同

package com.java3.ch4;import java.util.Scanner;public class T1312 {public static void main(String[] args) {Scanner scan = new Scanner(System.in);String str1 = scan.nextLine();String str2 = scan.nextLine();
//        String str1 = "I am  suantoujun.";
//        String str2 = "I am  huayemei.";//        System.out.println(str1);
//        System.out.println(str2);char[] arrayStr1 = str1.toCharArray();char[] arrayStr2 = str2.toCharArray();int lenStr1 = arrayStr1.length;int lenStr2 = arrayStr2.length;int len = (lenStr1 > lenStr2)?lenStr2:lenStr1;for(int i = 0;i < len;i++){if(arrayStr1[i] == arrayStr2[i]){System.out.print((i + 1) + " ");}}}
}
I am  suantoujun.
I am  huayemei.
1 2 3 4 5 6 8 9 

T1957

输入一行字符,分别统计出其中英文字母、数字、空格和其他字符的个数

解析:找对其对应的 ASCII码值的范围 分别对应即可

package com.java3.ch4;import java.util.Scanner;public class T1957 {public static void main(String[] args) {Scanner scan = new Scanner(System.in);String str = scan.nextLine();char[] array = str.toCharArray();int[] count = new int[4];for(int i = 0;i < array.length;i++){int temp = (int)array[i];//大写字母 65-90 小写字母 97-122if((temp >= 65 && temp <= 90) || (temp >= 97 && temp <= 122)){count[0]++;}else if(temp >= 48 && temp <= 57){//数字0-9:48-57count[1]++;}else if(temp == 32){//空格 32count[2]++;}else{count[3]++;}}for(int i = 0;i < count.length;i++){System.out.print(count[i] + " ");}}
}
aklsjflj123 sadf918u324 asdf91u32oasdf/.';123
23 16 2 4 

http://www.ppmy.cn/news/521479.html

相关文章

Java | extends关键字【面向对象的第二大特征——继承】

CSDN话题挑战赛第2期 参赛话题&#xff1a;Java技术分享 Java之extends关键字 一、继承的概念引入1、继承是什么&#xff1f;有什么好处&#xff1f;2、怎么继承&#xff1f;格式是怎样的&#xff1f;3、继承之后会怎样呢&#xff1f;4、Java继承与C继承的区别 二、简单案例&am…

T2135,T1429,T1133,T1246

T2135&#xff0c;T1429&#xff0c;T1133&#xff0c;T1246 T2135T1429T1133T1246参考文献 T2135 某小学最近得到了一笔赞助&#xff0c;打算拿出其中一部分为学习成绩优秀的前 5 名学生发奖学金。期末&#xff0c;每个学生都有 3 门课的成绩&#xff1a;语文、数学、英语。先…

Linux kernel的中断子系统之(七):GIC代码分析

转载地址&#xff1a;https://www.cnblogs.com/arnoldlu/p/7599595.html 总结&#xff1a; 原文地址&#xff1a;《linux kernel的中断子系统之&#xff08;七&#xff09;&#xff1a;GIC代码分析》 参考代码&#xff1a;http://elixir.free-electrons.com/linux/v3.17-rc3/s…

Struts2之标签库常用标签

基本概述&#xff1a;在JavaWeb中&#xff0c;Struts2标签库是一个比较完善&#xff0c;而且功能强大的标签库&#xff0c;它将所有标签都统一到一个标签库中&#xff0c;从而简化了标签的使用&#xff0c;它还提供主题和模板的支持&#xff0c;极大地简化了视图页面代码的编写…

MyBatis第一讲:MyBatis

一、什么是框架 1、1什么是框架 **框架&#xff08;Framework&#xff09;**是整个或部分系统的可重用设计&#xff0c;表现为一组抽象构件及构件实例间交互的方法; 另一种定义认为&#xff0c;框架是可被应用开发者定制的应用骨架。开发者可以根据自己的需求定制框架中的某些…

数据库高级

数据库高级&#x1f985; 文章目录 数据库高级&#x1f985;范式&#x1f98d;什么是范式&#x1f40a;第一范式——1NF&#x1f996;第二范式——2NF&#x1f41f;第三范式——3NF&#x1f409;总结&#x1f419; 五大约束&#x1f40f;主键约束&#x1f421;外键约束&#x1…

spring框架-循环依赖问题(二)

文章目录 什么是循环依赖解决循环依赖的办法知识扩展 什么是循环依赖 两个或多个类之间存在彼此依赖的情况,形成一个循环依赖链 代码&#xff1a; 单例bean的循环依赖&#xff1a; 先了解Bean的生命周期&#xff1a;1.实例化 2.初始化、3.使用 4.销毁 详细了解Bean生命周期…

Python基础篇(二):入门基础必备知识

Python基础篇(一)&#xff1a;如何使用PyCharm创建第一个Python项目(包含tools) 入门基础必备知识 1. 标识符2. 关键字2.1 关键字字典 3. 引号3.1 表示字符串3.2 在字符串中使用引号3.3 创建多行字符串3.4 在注释中使用引号 4. 编码5. 输入输出5.1 输入示例5.2 输出示例5.3 格…