#45024: c++ 用struct 詳解


huangyuchenorangetea@gmail.com (黃郁宸)

學校 : 國立臺北大學
編號 : 269325
來源 : [36.225.224.6]
最後登入時間 :
2025-02-26 02:06:08
k399. 取貨 (Pickup) -- TOI練習賽202305新手組第3題 | From: [1.34.178.95] | 發表日期 : 2025-01-03 01:59

#include<iostream>
#include<string.h>
#include<stdlib.h>
using namespace std;
struct letter{
    int s;
    int e;
    int inte_index;
};
int main(){
        string s;
        cin>>s;;
        //cout<<s[1];
        int integer[187];
        int len=s.length();
        //cout<<len;
        memset(integer,-1,sizeof(integer));
        int trans;
        for(int i=0;i<len;i++){
            trans=s[i];
            integer[trans]=0;
        }
        int cont=-1;//會是index
        struct letter listt[52];
        for(int i=0;i<len;i++){
            trans=s[i];
            for(int j=0;j<187;j++){
                if(trans==j && integer[j]!=-1){
                    cont++;
                    listt[cont].inte_index=j;
                    integer[j]=-1;
                    break;
                }
            }
        }
        //cout<<cont<<endl;
        int target;
        for(int i=0;i<=cont;i++){
            target=listt[i].inte_index;
            ///
            for(int j=0;j<len;j++){
                trans=s[j];
                if(trans==target){
                    listt[i].s=j;
                    break;
                }
            }
            ///
            for(int k=len-1;k>=0;k--){
                trans=s[k];
                if(trans==target){
                    listt[i].e=k;
                    break;
                }
            }
            ///
        }
        struct letter temp;
        for(int i=cont-1;i>=0;i--){
            for(int j=0;j<=i;j++){
                if(listt[j+1].e<listt[j].e){
                    temp=listt[j+1];
                    listt[j+1]=listt[j];
                    listt[j]=temp;
                }
            }
        }
        int IND;
        for(int i=0;i<=cont;i++){
            //cout<<listt[i].inte_index<<endl;
            IND=listt[i].inte_index;
            integer[IND]=i+1;
        }
        for(int i=0;i<187;i++){
            if(integer[i]!=-1){
                cout<<integer[i];
            }
        }
}

 
ZeroJudge Forum