AcWing 5370. 最小和
原题链接
中等
作者:
MoonlightF
,
2023-12-10 13:26:26
,
所有人可见
,
阅读 132
import java.util.Arrays;
import java.util.Scanner;
public class Main{
static int N = 10;
static int[] w = new int[N];// a ~ j 对应 0 - 9
static boolean[] st = new boolean[N];
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
String s = "";
while(n -- > 0){
s = sc.next();
for(int i = s.length() - 1, j = 1; i >= 0; i --, j *= 10 ){
w[s.charAt(i) - 'a'] += j;
st[s.charAt(0) - 'a'] = true; //把第一位用到的字母标记
}
}
int t = -1;
//找到可以为0的最大权重值
for(int i = 0; i < 10; i ++ ){
if(!st[i] && (t == -1 || w[t] < w[i])){
t = i;
}
}
//处理最大权重,把他放在数组最后,然后堆前面的9个数排序
for(int i = 0, j = 0; i < 10; i ++ ) {
if (i != t) {
w[j++] = w[i];
}
}
Arrays.sort(w,0,9);
int res = 0;
//权重大的值小,答案就小
for(int i = 0, j = 9; i < 9 ;i ++, j -- ){
res += w[i] * j;
}
System.out.println(res);
}
}
佬,t=-1是什么意思呀
t == -1 就是初始化一个值,这个值只要是数组中不存在的数就可以,相当于开了一个存放值的空间。