小孩的游戏
就是按要求排,然后输出,只要弄懂优先级别就好了,肯定先比十位数,然后比个位,但是个位数的优先度不一样,比如3,是和33的优先度一样的
桶排做法
#include<bits/stdc++.h>
using namespace std;
#define sf scanf
#define scf(x) scanf("%d",&x)
#define pf printf
#define prf(x) printf("%d\n",x)
#define mm(x,b) memset((x),(b),sizeof(x))
#define rep(i,a,n) for (int i=a;i<n;i++)
#define per(i,a,n) for (int i=a;i>=n;i--)
typedef long long ll;
const ll mod=1e9+100;
const double eps=1e-8;
using namespace std;
const double pi=acos(-1.0);
const int inf=0xfffffff;
const int N=1e5;
int a[105];
void read(int &x)
{
int f=1;x=0;char s=getchar();
while(s<'0'||s>'9'){if(s=='-')f=-1;s=getchar();}
while(s>='0'&&s<='9'){x=x*10+s-'0';s=getchar();}
x*=f;
}
void print(int x)
{
if(x<0)//负数
{
putchar('-');
x=-x;
}
if(x>9)
print(x/10);
putchar(x%10+'0');
}
int main()
{
int n, x;
read(n);
rep(i,0,n)
{
read(x);
a[x]++;
}
per(i,99,10)
{
while(a[i]--)
{
print(i);
}
if((i%10)==i/10)
{
while(a[i/10]--)
print(i/10);
}
}
while(a[100]--)
print(100);
while(a[0]--)
print(0);
return 0;
}
用优先队列的,这个和sort类似
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include <iomanip>
#include<cmath>
#include<float.h>
#include<string.h>
#include<algorithm>
#define sf scanf
#define scf(x) scanf("%d",&x)
#define pf printf
#define prf(x) printf("%d\n",x)
#define mm(x,b) memset((x),(b),sizeof(x))
#include<vector>
#include<queue>
#define rep(i,a,n) for (int i=a;i<n;i++)
#define per(i,a,n) for (int i=a;i>=n;i--)
typedef long long ll;
const ll mod=1e9+100;
const double eps=1e-8;
using namespace std;
const double pi=acos(-1.0);
const int inf=0xfffffff;
const int N=1e6+5;
struct node
{
int x;
int a[3];
node(int k=0)
{
x=k;
if(k==0)
{
a[0]=a[1]=a[2]=0;
}else if(k<10)
{
a[1]=a[2]=a[0]=k;
}else if(k==100)
{
a[0]=1;
a[1]=a[2]=0;
}else
{
a[1]=k%10;
a[2]=a[0]=k/10;
}
}
friend bool operator <(node x,node y)
{
if(x.a[0]!=y.a[0])
return x.a[0]<y.a[0];
if(x.a[1]!=y.a[1])
return x.a[1]<y.a[1];
if(x.a[2]!=y.a[2])
return x.a[2]<y.a[2];
}
};
priority_queue<node> v;
int main()
{
int n;scf(n);
while(n--)
{
int x;scf(x);
v.push(node(x));
}
node t;
while(!v.empty())
{
t=v.top();v.pop();
pf("%d",t.x);
}
return 0;
}