第一行输入一个整数
代表数组中的元素数量。
第二行输入
个整数
代表数组元素。
如果数组在重新排序后可以成为数独数组,输出
;否则,输出
。
9 1 2 3 4 5 6 7 9 8
YES
在这个样例中,不需要经过重新排序,数组已经是一个数独数组。
9 1 2 3 4 5 6 7 8 1
NO
定义一个容量为10的数组来存储数字1~9,接收控制台过来的每个数字。
如1,则把map[1] += 1,若排序能形成结果,每个数字的数量满足 >= n / 9且<= n / 9 + 1。
如果不满足,则输出NO。若满足,则输出YES
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {
int numberCount = in.nextInt();
int[] map = new int[10];
for (int i = 0; i < numberCount; i++) {
map[in.nextInt()]++;
}
String res = "YES";
for (int i = 1; i <= 9; i++) {
if (map[i] >= numberCount / 9 && map[i] <= numberCount / 9 + 1) {
continue;
} else {
res = "NO";
break;
}
}
System.out.println(res);
}
}
} n = int(input())
an = list(map(int, input().strip().split(' ')))
if not (9<=n<=10**5 and len(an) == n and all(1<=ai<=9 for ai in an)):
print('请输入有效范围内的整数n和数组元素ai')
else:
dic = {}
for ai in an:
dic[ai] = dic.get(ai, 0) + 1
if len(set(dic.keys())) == 9 and (max(dic.values()) - min(dic.values())) <= 1:
print('YES')
else:
print('NO')
# 构成数独数组的关键是1-9这9个数字都得至少出现一次,并且各个数字出现次数的最大值与最小值之间不超过1。
# 是否构成数独数组与数组长度是否为9的倍数无关。【1,2,3,4,5,6,7,8,9,1,2,3】仍是数独数组。
# 【1,2,3,4,5,6,7,7,9】不是数独数组。【1,2,3,4,5,6,7,7,7,8,9】不是数独数组。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n;
while (cin >> n) {
vector<int> v(10, 0);
int num;
for (int i = 0; i < n; i++) {
cin >> num;
v[num]++;
}
int Min = *min_element(v.begin() + 1, v.end());
int Max = *max_element(v.begin() + 1, v.end());
if (Max - Min <= 1) {
cout << "YES" << endl;
} else {
cout << "NO" << endl;
}
}
return 0;
} #include <bits/stdc++.h>
using namespace std;
using ll=long long;
int main()
{
int n;
cin>>n;
vector<int> a(n),cnt(9,0);
for (int i=0;i<n;i++)
{
cin>>a[i];
cnt[a[i]-1]++;
}
int Mm=n/9,cnt_m=0;
for (int c:cnt)
{
if (c>=Mm && c<=Mm+1)
{
if (c==Mm+1) cnt_m++;
}
else
{
cout<<"NO";
return 0;
}
}
if (cnt_m==n%9) cout<<"YES";
else cout<<"NO";
return 0;
}
// 64 位输出请用 printf("%lld") 0-9数字出现最多的次数必须比最少的次数相差1以内
#include <iostream>
#include <vector>
using namespace std;
int main(){
int N;
cin >> N;
vector<int> nums={0,0,0,0,0,0,0,0,0};
int max=0,min=N;
int Q;
while(N--){
cin >> Q;
nums[(int)(Q-1)]++;
}
for( int i=0;i<9;i++ ){
max = max>nums[i]?max:nums[i];
min = min<nums[i]?min:nums[i];
}
if(max-min<2){
cout << "YES";
}else{
cout << "NO";
}
cout << endl;
return 0;
} n=int(input()) lst = list(map(int,input().split())) result = "YES" cnt_lst = [] for i in range(1,10): cnt_lst.append(lst.count(i)) #简单理解为:重新排序后,去掉前面n//9个1~9的内容,还需要保证剩下部分不重复,但凡有一个重复就不满足条件 if max(cnt_lst)-min(cnt_lst) >1: result = "NO" print(result)
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
//用于计数
int[] count = new int[9];
for(int i =0; i<n; i ++){
int num = in.nextInt();
count[num-1]++;
}
int max = 0;
int min = 1000000;
//取计数最大最小值
for(int c:count){
max = Math.max(max,c);
min = Math.min(min,c);
}
//差值0,1可行
if(max - min == 1 || max - min == 0){
System.out.print("YES");
}else{
System.out.print("NO");
}
}
#include <iostream>
#include <set>
#include <vector>
using namespace std;
bool find19(multiset<int> &s){
for(int i=1;i<=9;i++){
auto it=s.find(i);
if(it==s.end()){return false;}
else{s.erase(it);}
}
return true;
}
int main() {
multiset<int> s;
int n,m;
cin>>n;
for(int i=1;i<=n;i++){
cin>>m;
s.insert(m);
}
while(s.size()>=9){
if(!find19(s)){
cout<<"NO";
return 0;
}
}
set<int> ss(s.begin(),s.end());
if(ss.size()!=s.size()){
cout<<"NO";
return 0;
}
cout<<"YES";
return 0;
}
// 64 位输出请用 printf("%lld") import java.util.Scanner;
import java.util.TreeMap;
import java.util.TreeSet;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int nu = in.nextInt();
char[] ch = new char[nu];
TreeMap<Integer, Integer> tre = new TreeMap<>();
int yu = nu%9;
int su = nu/9;
for(int i=0; i< nu;i++){
int temp = in.nextInt();
tre.put(temp, tre.getOrDefault(temp, 0)+1);
// tre.add(in.nextInt());
}
int countA =0;
int countB =0;
for(Integer key : tre.keySet()){
if(tre.get(key)>=su+1){
countA++;
}
if(tre.get(key) == su){
countB++;
}
}
// System.out.println(countA);
// System.out.println(countB);
if(countA >= yu && countB ==9-yu){
System.out.println("YES");
}else{
System.out.println("NO");
}
}
}