题目:
思路:
把奶牛所希望的编号排个序,然后就是乘法原理了。
比如 4 3 9 6, 排序为3 4 6 9。第一个奶牛有3种取法,第二只奶牛有(4-1)种取法,第三头奶油有(6-2)种取法,第四匹奶牛就有9-3种取法 即 count=count*(h[i]-i) 同时由于结果过大,声明的时候声明为long 类型64位
代码:
import java.util.*;
public class Main {
private static final long MOD = 1000000007;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] nums = new int[n];
for (int i=0; i!=n; i++) {
nums[i] = sc.nextInt();
}
Arrays.sort(nums);
long ans = 1;//long是64位,此题中数据较大采用long
for (int i=0; i!=n; i++) {
ans *= ((nums[i] - i) % MOD);
ans %= MOD;
}
System.out.println(ans);
}
}
题目:
思路:
这个题解法的巧妙之处就在于用了两个变量,一个用来记录最大值,一个用来随时计数
就是如果是(的话就++,遇到时)的时候--抵消掉一个左括号,,但是每次都比较大小,用max记录下最大值,这样可以处理连个串的结合以后
代码:
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
String str=sc.nextLine();
int count=0,max=0;
for(int i=0;i<str.length();i++){
if(str.charAt(i)=='(')
count++;
max=max>count?max:count;
if(str.charAt(i)==')')
count--;
}
System.out.println(max);
}
}