1.连续组合数字
#include<iostream>
#include<vector>
using namespace std;
int main() {
int n;
cin >> n;
int count = 0;
int m = n;
vector<int> data(n);
vector<int> set(n,0);
for (int i = 0; i < n; i++) {
cin >> data[i];
}
int max = data[0];
int min = data[0];
for (int i = 0; i < n; i++) {
if (data[i] == 0) {
count++;
}
else if (max < data[i]) max = data[i];
else if (min > data[i]) min = data[i];
}
if (count >= n - 1) {
cout << "YES" << "+" << count << endl;
}
else if (max - min != n - 1) {
}
else {
for (int i = 0; i < n; i++) {
if (data[i] != 0) {
if (set[data[i] - min] == 1) {
cout << "NO" << "+" << count << endl;
break;
}
set[data[i] - min]++;
}
}
cout << "YES" << "+" << count << endl;
}
//system("pause");
return 0;
}
2