最开始开结构体数组映射乱搞,果断超时,各种生活不能自理
超时代码:
#include <stdio.h>
#include <string.h>
struct p{
char s[12];
int flag;
}p[200005];
int main(){
int n,i,j;
scanf("%d",&n);
for(i=1;i<=n;i++){
p[i].flag=0;
}
scanf("%s",p[1].s);
for(i=2;i<=n;i++){
scanf("%s",p[i].s);
for(j=i-1;j>=1;j--){
if(!p[j].flag)
if(strcmp(p[i].s,p[j].s)==0){
p[j].flag=1;
break;
}
}
}
for(i=n;i>=1;i--){
if(p[i].flag==0)
printf("%s\n",p[i].s);
}
return 0;
}
最后试着用STL,,,,第一次用map映射。。。貌似很好用的啊
#include <cstdio>
#include <iostream>
#include <string>
#include <stack>
#include <map>
using namespace std;
int main(){
int n;
stack<string>S;
map<string,int>M;
string s;
scanf("%d",&n);
while(n--){
cin>>s;
S.push(s);
M[s]=1;
}
while(!S.empty()){
if(M[S.top()]==1){
cout<<S.top()<<endl;
M[S.top()]--;
S.pop();
}
else
S.pop();
}
return 0;
}