头像

wxdl

山西大学




离线:10小时前


分享 类(1)

wxdl
10小时前
//时钟类
#include<iostream>
using namespace std;
class Clock//时钟类的定义 
{
    public://外部接口,共有成员函数 
        void setTime(int nweH=0,int newM=0,int newS=0);
        void showTime();
    private://私有数据成员 
        int hour,minute,second;
};
//时钟类成员函数的具体实现 
void Clock::setTime(int newH,int newM,int newS)
{
    hour=newH;
    minute=newM;
    second=newS;
}
inline void Clock::showTime()
{
    cout<<hour<<":"<<minute<<":"<<second<<endl;
}
//主函数 
int main()
{
    Clock myClock;//定义对象myClock 
    cout<<"First time set and output:"<<endl;
    myClock.setTime();//设置时间为默认值 
    myClock.showTime();//显示时间 
    cout<<"Second time set and output:"<<endl;
    myClock.setTime(8,30,30);//设置时间为8:30:30 
    myClock.showTime();//显示时间 
    return 0;   
} 



wxdl
11小时前
#include<iostream>
using namespace std;

void move(char src,char dest)
//把src针的最上面盘子移动到dest针上 
{
    cout<<src<<"-->"<<dest<<endl;
}
//把n个盘子从src针移动到dest针 ,以medium针为中介
void hanoi(int n,char src,char medium,char dest)
{
    if(n==1)    move(src,dest);
    else
    {
        hanoi(n-1,src,dest,medium);
        move(src,dest);
        hanoi(n-1,medium,src,dest); 
    }   
} 

int main()
{
    int m;
    cout<<"Enter the number of disks: ";
    cin>>m;
    cout<<"the steps to move"<<m<<"disks:"<<endl;
    hanoi(m,'A','B','C');
    return 0;
}



wxdl
2天前
#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>

using namespace std;

//找树根和孩子
int tree[101];
int main()
{
    int n,m,x,y;
    cin>>n>>m;
    for(int i=1;i<=m;i++)
    {
        cin>>x>>y;
        tree[y]=x;//y是x的孩子
    }
    //寻找根节点
    int root;
    for(int i=1;i<=n;i++)
    {
        if(tree[i]==0)
        {
            root=i;
            break;
        }
    }
    //找到孩子最多的节点
    int maxroot,cnt=0,maxcnt=0;
    for(int i=1;i<=n;i++)
    {
        cnt=0;
        for(int j=1;j<=n;j++)
        {
            if(tree[j]==i) cnt++;
        }
        if(cnt>maxcnt)
        {
            maxcnt=cnt;
            maxroot=i;
        }
    }
    cout<<root<<endl<<maxroot<<endl;
    for(int i=1;i<=n;i++)
    {
        if(tree[i]==maxroot)
        {
            cout<<i<<" ";
        }
    }
    return 0;
}



wxdl
2天前
//树与二叉树 满二叉树 完全二叉树
//二叉的性质:在二叉树的第i层最多有2^(i-1)个节点(i>=1)
//如果二叉树深度为K,那么最对有2^K-1个节点
//因为二叉树中所有节点的度数均不大于2 所以总节点
//n=n0+n1+n2
//n0=n2+1 度数
//具有n个节点的完全二叉树的深度为floor(log2n)+1
//floor为下取整(ceil上取)
//若对含n个节点的完全二叉树从上到下期且从左到右1-n编号



wxdl
2天前
#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>

using namespace std;
//周末舞会--队列
queue<int> q1,q2;
int main()
{
    int m,n,k;
    cin>>m>>n>>k;
    for(int i=1;i<=n;i++)  q1.push(i);
    for(int i=1;i<=m;i++)  q2.push(i);
    for(int i=1;i<=k;i++)
    {
        int a=q1.front();
        int b=q2.front();
        cout<<a<<" "<<b<<endl;
        q1.pop();
        q2.pop();
        q1.push(a);
        q2.push(b);
    }

    return 0;
}


分享 Blah数集

wxdl
2天前
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;
//Blah数集
int a,n,q[100005];
void calc(int a,int n)
{
    q[1]=a;
    int two=1,three=1,rear=2;
    while(rear<=n)
    {
        long long t1=q[two]*2+1,t2=q[three]*3+1;
        long long t=min(t1,t2);
        if(t1<t2)
            two++;
        else 
            three++;
        if(t<=q[rear-1])  continue;
        q[rear++]=t;
    }
}

int main()
{
    calc(1,100);
    for(int i=1;i<=100;i++)  cout<<q[i]<<" ";

    return 0;
}


分享 并查集

wxdl
2天前
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;
const int N = 1e3+5;
int p[N];
int n,m,t;
void init()
{
    for(int i=1;i<=n;i++) p[i]=i;
}
int find(int x)
{
    if(p[x]!=x) p[x]=find(p[x]);
    return p[x];
}
void u(int x,int y)
{
    p[find(y)]=find(x);
}

int main()
{
    cin>>n>>m>>t;
    init();
    while (m -- )
    {
        int x,y;
        cin>>x>>y;
        u(x,y);
    }
    while(t--)
    {
        int x,y;
        cin>>x>>y;
        if(find(x)!=find(y)) cout<<"NO"<<endl;
        else cout<<"YES"<<endl;
    }
    return 0;
}
#include<iostream>
using namespace std;
const int N =100010;
int parent[N];
void Build(int n)
{
    for(int i=1;i<=n;i++)
    parent[i]=i;
}
int Find(int x)
{
    if(parent[x]!=x)  parent[x]=Find(parent[x]);
    return parent[x];
}

void Union(int x,int y)
{
    parent[Find(y)]=Find(x);
}


int main()
{
    int n,m;
    cin>>n>>m;
    Build(n);
    while(m--)
    {
        char op[2];
        scanf("%s",op);
        if(op[0]=='M')
        {
            int x,y;
            cin>>x>>y;
            Union(x,y);
        }
        else 
        {
            int x,y;
            cin>>x>>y;
            if(Find(x)==Find(y)) cout<<"Yes"<<endl;
            else cout<<"No"<<endl;
        }

    }
    return 0;
}



wxdl
2天前
#include <iostream>
#include <cstring>
#include <algorithm>
#include<stack>
//后缀表达式--栈

using namespace std;
string str;
stack<long long> s;
int main()
{
    getline(cin,str);//有空格
    for(int i=0;i<=str.size()-2;i++)
    {
        if(str[i]=='+')
        {
            long long temp=s.top();
            s.pop();
            s.top()+=temp;
        }
        else if(str[i]=='-')
        {
            long long temp=s.top();
            s.pop();
            s.top()-=temp;
        }
        else if(str[i]=='*')
        {
            long long temp=s.top();
            s.pop();
            s.top()*=temp;
        }
        else if(str[i]=='/')
        {
            long long temp=s.top();
            s.pop();
            s.top()/=temp;
        }
        else if(str[i]>='0'&&str[i]<='9')
        {
            long long x=0;
            while(str[i]!=' ')
            {
                x=x*10+str[i++]-'0';
                s.push(x);
            }
        }

    }
    cout<<s.top()<<endl;
    return 0;
}



wxdl
2天前
#include <iostream>
#include <cstring>
#include <algorithm>
#include<stack>
//括号匹配--栈

using namespace std;
string str;
stack<char> s;
int main()
{
    cin>>str;
    for(int i=0;i<str.size();i++)
    {
        if(str[i]=='('||str[i]=='[') s.push(str[i]);
        else if(str[i]==')'&&!s.empty()&&s.top()=='(') s.pop();
        else if(str[i]==']'&&!s.empty()&&s.top()=='[') s.pop();
        else
        {
            cout<<"wrong";
            return 0;
        }
    }
    if(!s.empty())  cout<<"wrong";
    else cout<<"ok";
    return 0;
}



wxdl
2天前
#include <iostream>
#include <cstring>
#include <algorithm>
#include<stack>
//车厢调度--栈
using namespace std;
const int MOD=1000000007;
const int N=10000+5;
const int dx[]= {-1,1,0,0};
const int dy[]= {0,0,-1,1};
using namespace std;
int a[N];
stack<int> S;
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)//a[i]为到达B站的车厢
        cin>>a[i];

    int cur=1;//cur为需要进栈的车厢 
    for(int i=1;i<=n;i++)//进栈,到达A站;出栈,到达B站
    {
        while(cur<=a[i])//比a[i]小的车厢都要在栈中
            S.push(cur++);
        if(S.top()==a[i])//将a[i]弹出栈
            S.pop();
        else
        {
            cout<<"NO"<<endl;
            return 0;
        }
    }
    cout<<"YES"<<endl;
    return 0;
}