• 小孩的游戏


    就是按要求排,然后输出,只要弄懂优先级别就好了,肯定先比十位数,然后比个位,但是个位数的优先度不一样,比如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
    ",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
    ",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;
    }
    
  • 相关阅读:
    【Mysql】日期时间格式化
    【CSS】css网页背景图片设置
    【C#】【Thread】SynchronizationContext线程间同步
    love2d--glsl03噪声
    love2d--glsl02变量和语句
    love2d--glsl01简单的渲染
    love2d 0.9发布
    工作感受
    本系列love2d示例代码错误集中整理
    一些lua代码
  • 原文地址:https://www.cnblogs.com/wzl19981116/p/10087277.html
Copyright © 2020-2023  润新知