卡牌
连续拼接的最大值:
#include<iostream>
using namespace std;
int a[10] = { 0 };
int main() {
for (int s = 0;;s++) {
int temp = s;
while (temp) {
a[temp % 10]++;
temp /= 10;
}
for (int i = 0; i < 10;i++) {
if (a[i] > 2021) {
cout << s - 1 << endl;
return 0;
}
}
}
}
拼接递增序列最大值:
#include<iostream>
using namespace std;
int num[10];
int num_count1[10];
int num_count2[10];
int cat_num;
void init() {
for (int i = 0; i < 10;i++) {
num[i] = i;
num_count1[i] = 2021;
}
}
void count_copy(int nc1[],int nc2[]) {
for (int i = 0; i < 10;i++) {
nc2[i] = nc1[i];
}
}
bool scan(int num) {
int k;
int falg;
do {
k = num % 10;
num_count1[k]--;
if (num_count1[k] < 0) {
return false;
}
num /= 10;
} while (num != 0