时间:2021-07-01 10:21:17 帮助过:6人阅读
注意一开始就有sun,还有样例的.其实是空格,英语渣了。。。
代码:
#include <iostream> #include <cstdio> #include <cstdlib> #include <cmath> #include <algorithm> #include <climits> #include <cstring> #include <string> #include <set> #include <map> #include <queue> #include <stack> #include <vector> #include <list> #define rep(i,m,n) for(i=m;i<=n;i++) #define rsp(it,s) for(set<int>::iterator it=s.begin();it!=s.end();it++) #define mod 1000000007 #define inf 0x3f3f3f3f #define vi vector<int> #define pb push_back #define mp make_pair #define fi first #define se second #define ll long long #define pi acos(-1.0) #define pii pair<int,int> #define Lson L, mid, rt<<1 #define Rson mid+1, R, rt<<1|1 const int maxn=1e6+10; using namespace std; ll gcd(ll p,ll q){return q==0?p:gcd(q,p%q);} ll qpow(ll p,ll q){ll f=1;while(q){if(q&1)f=f*p;p=p*p;q>>=1;}return f;} int n,m,k,t,id,cnt; struct node { int to[36],num; char c[30]; }a[maxn]; char b[maxn]; void add(char*p) { int now=0; for(int i=0;p[i];i++) { int x=(p[i]>=‘a‘&&p[i]<=‘z‘)?p[i]-‘a‘+10:p[i]-‘0‘; if(!a[now].to[x])a[now].to[x]=++id; now=a[now].to[x]; } strcpy(a[now].c,p); a[now].num=1; } void dfs(int now) { if(cnt>20)return; if(a[now].num) { if(cnt<=20)printf(" %s\n",a[now].c),cnt++; else return; } for(int i=0;i<=35;i++) { if(a[now].to[i])dfs(a[now].to[i]); } } void gao(char*p) { printf("%s\n",p); int now=0,i; for(i=0;p[i];i++) { int x=(p[i]>=‘a‘&&p[i]<=‘z‘)?p[i]-‘a‘+10:p[i]-‘0‘; if(a[now].to[x])now=a[now].to[x]; else break; } if(!p[i])dfs(now); } int main() { int i,j; add("sun"); while(~scanf("%s",b)) { if(b[0]==‘+‘) { strcpy(b,b+1); add(b); } else { cnt=1; strcpy(b,b+1); gao(b); } } //system("Pause"); return 0; }
Astronomical Database
标签: