【第一题】变成回文字符串
给定一个字符串,问最少改变多少个字符,会变成回文字符串?
第一个输入是字符串长度,第二个输入是字符串
输出改变次数;
如:输入4 acac,输出2
import java.util.Scanner;
public class Main1{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
int n = sc.nextInt();
String s = sc.next();
int len = s.length();
char[] c = s.toCharArray();
int i = 0,j = len-1;
int count = 0;
while(i<=j){
if(c[j] != c[i]){
count++;
i++;
j--;
}else{
i++;
j--;
}
}
if(len%2==0){
System.out.println(count);
}else{
System.out.println(count++);
}
}
sc.close();
}
}
——100%
【第二题】方格图染色
给你一个NxM的方格图,现在要求你对其中每个1 x 1的小方格进行染色,要求如下:
- 每种颜色染色的格子数都是相同的。
- 相邻格子染的颜色不同。
- 所有格子必须染色。
现在问最少要多少种颜色就可以完成任务。
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();//测试数据组数
for(int i=0;i < T;i++){
int N = sc.nextInt();
int M = sc.nextInt();
if(N == 1){
System.out.println(minfactor(M));
}else if(M == 1){
System.out.println(minfactor(N));
}else{
int min = Math.min(minfactor(N),minfactor(M));
System.out.println(min);
}
}
}
public static int minfactor(int n){
for(int i=2;i<=Math.pow(n,0.5);i++){
if(n%i==0){
return i;
}
}
return n;
}
}
——100%
第三题:
给出一个正整数序列A,求一个子区间使得这个区间内的数或起来尽可能地大,一个序列的子区间指这个序列中连续的一段数字。
牛牛不关心这个最大值,只关心满足条件的子区间里,最短的子区间长度是多少?
System.out.println(2);
——90%!