标签:else vector set 欧拉 keep str i++ main chain
C题图论欧拉回路,还没写,因为太饿了,待补
#include<bits/stdc++.h>
using namespace std;
int m,n,s;
vector<string> person;
set<string> se;
vector<string> ans;
int main(){
    cin>>m>>n>>s;
    for(int i=1;i<=m;i++){
        string name;
        cin>>name;
        person.push_back(name);
    }
    int num = person.size();
//  for(int i=0;i<num;i++) cout<<person[i]<<endl; 
    if(s > num) puts("Keep going...");
    else{
        int pos = s-1;
        while(pos < num){
            if(se.find(person[pos]) == se.end()){
                se.insert(person[pos]);
//              cout<<pos<<endl;
                ans.push_back(person[pos]);
                pos = pos + n;
            }else{
                pos++;
            }
        }
        for(int i=0;i<ans.size();i++) cout<<ans[i]<<endl;
    }
    
    return 0;
} 
#include<bits/stdc++.h>
using namespace std;
priority_queue<int,vector<int>,greater<int> > que;
int n;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        int d;
        cin>>d;
        que.push(d);
    }
    while(que.size() != 1){
        int fir = que.top();
        que.pop();
        int sec = que.top();
        que.pop();
        int thir = (fir + sec)/2;
        que.push(thir);
    }
    cout<<que.top();
    return 0;
}
还没做,图论,欧拉回路
二叉树,中序后序建树,输出Z字型层次遍历的结果
#include<bits/stdc++.h>
using namespace std;
const int maxn = 50;
int n;
int post[maxn];
int in[maxn];
vector<int> ans[maxn];
struct node{
    int v;
    node *l;
    node *r;
};
int maxDepth = 0;
void dfs(node *root,int depth){
    if(depth > maxDepth) maxDepth = depth;
    ans[depth].push_back(root->v);
    if(root->l) dfs(root->l,depth+1);
    if(root->r) dfs(root->r,depth+1);
}
node * build(int root,int il,int ir) {
    if (il > ir) return NULL;
    int pos = il;
    while (pos <= ir && in[pos] != post[root]) 
        pos++;
    node* Root = new node;
    Root->v = post[root];
    Root->r = build(root-1, pos+1,ir );
    Root->l = build(root-(ir-pos)-1 ,il,pos - 1);
    return Root;
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++) cin>>in[i];
    for(int i=1;i<=n;i++) cin>>post[i];
    node *Root = new node();
    Root = build(n,1,n);
    dfs(Root,1);
    cout<<ans[1][0];
    for(int i=2;i<=maxDepth;i++){
        if(i%2==0){
            for(int j=0;j<ans[i].size();j++){
                cout<<" "<<ans[i][j];
            }
        }else{
            for(int j=ans[i].size()-1;j>=0;j--){
                cout<<" "<<ans[i][j];
            }
        }
    }
    return 0;
}标签:else vector set 欧拉 keep str i++ main chain
原文地址:https://www.cnblogs.com/fisherss/p/11994468.html