相邻数对
问题描述
给定n个不同的整数,问这些数中有多少对整数,它们的值正好相差1。
输入格式
输入的第一行包含一个整数n,表示给定整数的个数。
第二行包含所给定的n个整数。
输出格式
输出一个整数,表示值正好相差1的数对的个数。
样例输入
6
10 2 6 3 7 8
样例输出
3
样例说明
值正好相差1的数对包括(2, 3), (6, 7), (7, 8)。
评测用例规模与约定
1<=n<=1000,给定的整数为不超过10000的非负整数。
package CCF;
import java.util.Scanner;
public class fourteen_nine_one {
public static void main(String args[]) {
Scanner myscan = new Scanner(System.in);
int num = myscan.nextInt();
myscan.nextLine();
int[] numlist = new int[num];
for(int i=0;i<num;i++) {
numlist[i] = myscan.nextInt();
}
int use;
for(int i=0;i<num;i++) {
for(int j=i+1;j<num;j++) {
if(numlist[i]<numlist[j]) {
use = numlist[i];
numlist[i] = numlist[j];
numlist[j] = use;
}
}
}
use = 0;
for(int i=0;i<num;i++) {
if(i+1<num) {
if(numlist[i]-numlist[i+1]==1) {
use++;
}
}
}
System.out.println(use);
myscan.close();
}
}
画图
问题描述
在一个定义了直角坐标系的纸上,画一个(x1,y1)到(x2,y2)的矩形指将横坐标范围从x1到x2,纵坐标范围从y1到y2之间的区域涂上颜色。
下图给出了一个画了两个矩形的例子。第一个矩形是(1,1) 到(4, 4),用绿色和紫色表示。第二个矩形是(2, 3)到(6, 5),用蓝色和紫色表示。图中,一共有15个单位的面积被涂上颜色,其中紫色部分被涂了两次,但在计算面积时只计算一次。在实际的涂色过程中,所有的矩形都涂成统一的颜色,图中显示不同颜色仅为说明方便。
给出所有要画的矩形,请问总共有多少个单位的面积被涂上颜色。
输入格式
输入的第一行包含一个整数n,表示要画的矩形的个数。
接下来n行,每行4个非负整数,分别表示要画的矩形的左下角的横坐标与纵坐标,以及右上角的横坐标与纵坐标。
输出格式
输出一个整数,表示有多少个单位的面积被涂上颜色。
样例输入
2
1 1 4 4
2 3 6 5
样例输出
15
评测用例规模与约定
1<=n<=100,0<=横坐标、纵坐标<=100。
package CCF;
import java.util.Scanner;
public class fourteen_nine_two {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner myscan = new Scanner(System.in);
int num = myscan.nextInt();
myscan.nextLine();
squre[] snum = new squre[num];
int x = 0 ;
for(int i=0;i<num;i++) {
String s = myscan.nextLine();
String[] ss = s.split(" ");
snum[i] = new squre(Integer.parseInt(ss[0]),Integer.parseInt(ss[1]),Integer.parseInt(ss[2]),Integer.parseInt(ss[3]));
if(x<Integer.parseInt(ss[2])) {
x = Integer.parseInt(ss[2]);
}
if(x<Integer.parseInt(ss[3])) {
x = Integer.parseInt(ss[3]);
}
}
fou_laby use = new fou_laby(x+1,snum);//use.printit();
use.changneed();
myscan.close();
}
}
class fou_laby{
int x,y;
squre[] snum;
int[][] need;
int squre_s = 0;
public fou_laby(int x,squre[] snum) {
this.x = x;
y = x;
this.snum = snum;
need = new int[x][x];
for(int i=0;i<x;i++) {
for(int j=0;j<x;j++) {
need[i][j] = 0;
}
}
}
public void changneed() {
for(int i=0;i<snum.length;i++) {
for(int j=snum[i].x1;j<snum[i].x2;j++) {
for(int k=snum[i].y1;k<snum[i].y2;k++) {
need[j][k] = 1;
}
}//printit();
}
for(int i=0;i<x;i++) {
for(int j=0;j<y;j++) {
if(need[i][j] ==1) {
squre_s++;
}
}
}
System.out.println(squre_s);
}
public void printit() {
System.out.println("Squre:");
for(int i=0;i<x;i++) {
for(int j=0;j<y;j++) {
System.out.print(need[i][j]+" ");
}
System.out.println();
}
}
}
class squre{
int x1,y1,x2,y2;
public squre(int x1,int y1,int x2,int y2) {
this.x1 = x1;
this.y1 = y1;
this.x2 = x2;
this.y2 = y2;
}
}
字符串匹配
问题描述
给出一个字符串和多行文字,在这些文字中找到字符串出现的那些行。你的程序还需支持大小写敏感选项:当选项打开时,表示同一个字母的大写和小写看作不同的字符;当选项关闭时,表示同一个字母的大写和小写看作相同的字符。
输入格式
输入的第一行包含一个字符串S,由大小写英文字母组成。
第二行包含一个数字,表示大小写敏感的选项,当数字为0时表示大小写不敏感,当数字为1时表示大小写敏感。
第三行包含一个整数n,表示给出的文字的行数。
接下来n行,每行包含一个字符串,字符串由大小写英文字母组成,不含空格和其他字符。
输出格式
输出多行,每行包含一个字符串,按出现的顺序依次给出那些包含了字符串S的行。
样例输入
Hello
1
5
HelloWorld
HiHiHelloHiHi
GrepIsAGreatTool
HELLO
HELLOisNOTHello
样例输出
HelloWorld
HiHiHelloHiHi
HELLOisNOTHello
样例说明
在上面的样例中,第四个字符串虽然也是Hello,但是大小写不正确。如果将输入的第二行改为0,则第四个字符串应该输出。
评测用例规模与约定
1<=n<=100,每个字符串的长度不超过100。
package CCF;
import java.util.Scanner;
public class fourteen_nine_three {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner myscan = new Scanner(System.in);
String mains = myscan.nextLine();
int way = myscan.nextInt();
if(way!=0 && way!=1) {
myscan.close();
return;
}
myscan.nextLine();//System.out.println(myscan.nextLine());
int num = myscan.nextInt();
if(num<0) {
myscan.close();
return;
}
myscan.nextLine();//System.out.println(myscan.nextLine());
Analysis_string use = new Analysis_string(way,mains);//use.printit();
for(int i=0;i<num;i++) {
String uses = myscan.nextLine();
if(uses.matches("[a-zA-Z]+")) {
use.analysis(uses);//System.out.println(uses);
}
}
myscan.close();
}
}
class Analysis_string{
int way;
String mains;
public Analysis_string(int way,String mains) {
this.way = way;
this.mains = mains;
}
public void analysis(String string) {//System.out.println(string);
if(way == 0) {
String use_main = mains.toLowerCase();//System.out.println(use_main);
String use = string.toLowerCase();
if(use.contains(use_main)) {
System.out.println(string);
}
}
else if(way == 1){
if(string.contains(mains)) {//System.out.println(string.contains(mains));
System.out.println(string);
}
}
}
public void printit() {
System.out.println(way+" "+mains);
}
}