((()))()*2
(()())()*2
(())(())
(())()()*3
(()()())
((())())*2
((()()))
(((())))
()()()()
2+2+1+3+1+2+1=14
import java.util.Scanner;
public class t5 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
//接收键盘输入
String str = in.next();
//单词中的所有字母都在字母表上向后偏移3位,
//a-w只需要将每个字符的ASCII码值+3,xyz需要特殊处理,
//x-a y-b z-c
//转换为字符数组处理
char[] ch = str.toCharArray();
//遍历数组,将每个元素的ASCII值+3,判断是否为xyz若有转为相应字母
for(int i=0;i<ch.length;i++) {
if(ch[i]>='x') {
if(ch[i]=='x') {
ch[i] = 'a';
}
if(ch[i]=='y') {
ch[i] = 'b';
}
if(ch[i]=='z') {
ch[i] = 'c';
}
}else {
ch[i] = (char)((int)ch[i]+3);
}
}
for(int i=0;i<ch.length;i++) {
System.out.print(ch[i]);
}
}
}
import java.util.Scanner;
public class t6 {
public static void main(String[] args) {
//一个数的数位不包含数字 2,小明将它称为洁净数。
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int count = 0;
for(int i=1;i<=n;i++) {
//取余是否含有2
if(f(i)) {
count++;
}
}
System.out.println(n-count);
}
public static boolean f(int i) {
int temp2 = i;
while(temp2 != 0) {
int temp = temp2%10;
//计数
if(temp == 2) {
return true;
}
temp2 = temp2/10;
}
return false;
}
}
import java.util.Scanner;
public class t7 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
//整数n
int n = in.nextInt();
//给定数列数组
int[] arra = new int[n];
for(int i=0;i<arra.length;i++) {
arra[i] = in.nextInt();
}
//按照给定公式for循环定义下标i j
//利用两层for循环进行两两元素的比较,
int max = 0;
for(int i=0;i<arra.length-1;i++) {
for(int j=i+1;j<arra.length;j++) {
//给定公式 |i-j|+|a_i-a_j|
int ans = Math.abs(i-j)+Math.abs(arra[i]-arra[j]);
//if条件判断最大数
if(ans>max) {
max = ans;
}
}
}
System.out.println(max);
}
}
import java.util.Scanner;
public class t8 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
//整数n
int n = in.nextInt();
//n行2列星星数组
int[][] arra = new int[n][2];
for(int i=0;i<n;i++) {
for(int j=0;j<2;j++) {
arra[i][j] = in.nextInt();
}
}
// 已知条件x_i < x_j < x_k 且 y_j < y_i 且 y_j < y_k 时,这三颗星星就组成了一个大 V。
//x_i < x_j < x_k--->arra[i][0]<arra[j][0]<arra[k][0]
//y_j < y_i -->arra[j][1]<arra[i][1]
//y_j < y_k -->arra[j][1]<arra[k][1]
int count = 0;
for (int i = 0; i < arra.length; i++) {
for (int j = 0; j < arra.length; j++) {
for (int k = 0; k < arra.length; k++) {
if( arra[i][0]<arra[j][0] &&
arra[j][0]<arra[k][0] &&
arra[j][1]<arra[i][1] &&
arra[j][1]<arra[k][1]) {
count++;
}
}
}
}
System.out.println(count);
}
}
import java.util.Scanner;
public class t9 {
static int arra[];
public static void main(String[] args) {
//奇数项都比前一项大,偶数项都比前一项小
Scanner in = new Scanner(System.in);
//整数m
int m = in.nextInt();
//整数n
int n = in.nextInt();
//开数组
arra = new int[m];
dfs2(m, n, 0);
}
// public static void dfs(int m, int n) {
// for(int i=1;i<=n;i++) {
// for(int j=1;j<=n;j++) {
// for(int k=1;k<=n;k++) {
// if(j<i && j<k) {
// System.out.println(i+" "+j+" "+k);
// }
// }
// }
// }
// }
//位置1的数字要比位置0 3的数字小
public static void dfs2(int m, int n, int step) {
if(step>=m) {
for(int i=1;i<m;i+=2) {
//当数组长度是偶数是会产生下标i+1越界,如何解决呢
if(arra.length%2 == 0) {
//是否到达临界值i = len-1
if(i == arra.length-1) {
if(arra[i]<arra[i-1]) {
//输出数组内容
for(int j=0;j<m;j++) {
System.out.print(arra[j]+" ");
}
System.out.println();
}
}else {
if(arra[i]<arra[i-1] && arra[i]<arra[i+1]) {
continue;
}else {
break;
}
}
}else {
//数组的长度为奇数
//满足题目所说条件
if(arra[i]<arra[i-1] && arra[i]<arra[i+1]) {
//是否遍历到倒数第二个元素
if(i==arra.length-2) {
//输出数组内容
for(int j=0;j<m;j++) {
System.out.print(arra[j]+" ");
}
System.out.println();
}
}else {
break;
}
}
}
return;
}
for(int i=1;i<=n;i++) {
arra[step] = i;
dfs2(m, n, step+1);
}
}
}
/**
* 最少消耗,最小生成树
*/
import java.util.Scanner;
public class t10 {
int u;//顶点u
int v;//顶点v
double w;//边w
//并查集所需三个变量
static int[] f;
static double sum;//走过边的距离之和
static int count;//边的个数
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
//n个村庄
int n = in.nextInt();
//接收村庄坐标位置
int[][] arra = new int[n][3];
for(int i=0;i<n;i++) {
for(int j=0;j<3;j++) {
arra[i][j] = in.nextInt();
}
}
//第一个村庄建立发电站
f(arra,n);
}
public static void f(int[][] arra, int n) {
//存放起始点,终点,边的长度
t11[] lenArra = new t11[n*n*n];
//记录存放元素个数
int index = 0;
//求任意两点间的距离
for(int i=0;i<arra.length-1;i++) {
for (int j=i+1;j<arra.length;j++) {
//自己不能连自己
if(i != j) {
double len = Math.sqrt((arra[i][0]-arra[j][0])*(arra[i][0]-arra[j][0])+
(arra[i][1]-arra[j][1])*(arra[i][1]-arra[j][1]))+
(arra[i][2]-arra[j][2])*(arra[i][2]-arra[j][2]);
lenArra[index] = new t11();
lenArra[index].u = i;
lenArra[index].v = j;
lenArra[index].w = len;
index++;
//System.out.println(i+"---"+j+"---"+len);
}
}
}
//对数组lenArra由小到大进行排序
bubbleSort(index, lenArra);
//初始化,自己是自己的老板
f = new int[n+1];
for(int i=0;i<f.length;i++) {
f[i] = i;
}
//从最小的边开始选,依次选择每一条边,直到选择了n-1条边让整个图都连通为止
for(int i=0;i<index;i++) {
//判断两个顶点是否已经连通,即判断是否已在同一个集合当中
if(merge(lenArra[i].u, lenArra[i].v)) {
count++;
sum = sum+lenArra[i].w;
}
//边的个数满足要求
if(count == n-1) {
break;
}
}
System.out.printf("%.2f",sum);
// for(int i=0;i<index;i++) {
// System.out.println(lenArra[i].u+"--->"+lenArra[i].v+"-->"+lenArra[i].w);
// }
}
/**
* 并查集查找共同祖先
* @param v 顶点
* @param u 顶点
* @return 若返回值为true,表明此时的u v不在一个集合当中此时可以这条边可以加入到总距离,反之不可。
*/
public static boolean merge(int v, int u) {
int t1, t2;
t1 = getf(v);
t2 = getf(u);
//t1 t2 不相等表明此时的u v不在一个集合当中此时可以这条边可用
if(t1 != t2) {
return true;
}
return false;
}
/**
* 找寻最大boss
* @param v
* @return
*/
public static int getf(int v) {
if(f[v] == v) {
return v;
}else {
//压缩路径
f[v] = getf(f[v]);
return f[v];
}
}
/**
* 将lenArra中两村之间的距离按照由小到大排序,便于之后遍历元素时由上到下直接选取最小距离
* @param index
* @param lenArra
*/
public static void bubbleSort(int index, t11 lenArra[]) {
//对数组lenArra由小到大进行排序
for(int i=0;i<index-1;i++) {
for(int j=0;j<index-1-i;j++) {
if(lenArra[j].w>lenArra[j+1].w) {
double temp = lenArra[j].w;
lenArra[j].w = lenArra[j+1].w;
lenArra[j+1].w = temp;
int temp2 = lenArra[j].u;
lenArra[j].u = lenArra[j+1].u;
lenArra[j+1].u = temp2;
temp2 = lenArra[j].v;
lenArra[j].v = lenArra[j+1].v;
lenArra[j+1].v = temp2;
}
}
}
}
}