tcp、udp都是传输层协议
隔离性:不同事物互不干扰
编译看左,运行看右
Class.getFields():获取该类及其父类的所有public字段
Class.getDeclareFields():获取该类的所有字段,不包括父类字段
将权限设置为true了,每个属性的名称都可以访问到
1.成员变量的名字可以和局部变量名字相同。java采用局部优先的思想,当成员变量和局部变量名字相同时,遵循就近原则,优先使用局部变量。在实例方法中出现变量名相同,想要调用成员变量,可以用this调用。
2.方法中的形参名和局部变量名不能相同,会出现重复定义的问题
3.成员变量有默认初始化值,局部变量需要自定义默认初始化值。
有磁铁,则越靠右的列数目越多。对数组升序排序就行。
import java.util.Scanner;
import java.util.Arrays;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
// while (in.hasNextInt()) { // 注意 while 处理多个 case
// int a = in.nextInt();
// int b = in.nextInt();
// System.out.println(a + b);
// }
int m= in.nextInt();
int[] nums = new int[m];
for(int i=0;i<m;i++)
nums[i] = in.nextInt();
Arrays.sort(nums);
for(int i=0;i<m;i++)
System.out.print(nums[i]+" ");
}
}
计算好顺时针、逆时针、水平翻转的坐标变换;顺/逆时针四次回到原位、水平翻转两次回到原位
注意 顺/逆时针旋转后,行数和列数交换了
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int x,y,z,n,m,q;
x = in.nextInt();//顺时针旋转次数
y = in.nextInt();//水平翻转次数
z = in.nextInt();//逆时针旋转次数
n = in.nextInt();//行数
m = in.nextInt();//列数
q = in.nextInt();//询问次数
// 顺/逆时针旋转四次是一轮;水平翻转两次是一轮
x %= 4;
y %= 2;
z %= 4;
while (q > 0){
int a = in.nextInt()-1;
int b = in.nextInt()-1;
int newa=a,newb=b;//新坐标初始化
int row=n,col=m;//注意旋转后行列数会变
// 顺时针x次
for (int i=0;i<x;i++){
newa = b;
newb = row-a-1;
a = newa;
b = newb;
if (row == n){
row = m;
col = n;
}else {
row = n;
col = m;
}
}
// 水平翻转
if (y == 1){
newa = a;
newb = col-1-b;
b = newb;
}
// 逆时针旋转z次
for (int i=0;i<z;i++){
newa = col-1-b;
newb = a;
a = newa;
b = newb;
if (row == n){
row = m;
col = n;
}else {
row = n;
col = m;
}
}
a++;
b++;
System.out.println(a+" "+b);
q--;
}
}
这个问题用三重循环超时了;改进了一下还是超时了,还没解决。。。
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[] nums = new int[n];
for (int i=0;i<n;i++){
nums[i] = in.nextInt();
}
if (n<=2){
System.out.println("0");
return;
}
int x = 0;
for (int i=1;i<n-1;i++){
x += getCount(nums,i);
}
System.out.println(x);
}
// 输入数组元素,元素下标
private static int getCount(int[] nums,int i){
int left = 0,right = 0;
for (int j = 0;j < i;j++){
if (nums[j]<=nums[i])
left++;
}
for (int j=i+1;j<nums.length;j++){
if (nums[j]>=nums[i])
right++;
}
return left*right;
}
}