• 第六章习题


    本来准备模仿前几题建树来做,但是发现判断部分还是要写出答案那样.

      1 #include <iostream>
      2 #include <cstdio>
      3 
      4 
      5 using namespace std;
      6 
      7 struct Node
      8 {
      9     bool have_value;
     10     int w;
     11     int d;
     12 
     13     Node *left,*right;
     14 
     15     Node():left(NULL),right(NULL),have_value(false){}
     16 };
     17 
     18 Node* newnode() { return new Node(); }
     19 
     20 void remove_tree(Node* root)
     21 {
     22     if(root==NULL) return;
     23 
     24     remove_tree(root->left);
     25     remove_tree(root->right);
     26 
     27     delete root;
     28 }
     29 
     30 Node* built_tree(Node* root)
     31 {
     32     int wl,wr,dl,dr;
     33     cin>>wl>>dl>>wr>>dr;                    //建树过程中要注意全局变量的使用,如果换成全局变量,wl等不会被push进堆栈段从而导致数据丢失
     34     if(wl==0)
     35     {
     36         Node *rl=newnode();
     37         rl->d=dl;
     38         root->left=built_tree(rl);
     39     }
     40     if(wr==0)
     41     {
     42         Node *rr=newnode();
     43         rr->d=dr;
     44         root->right=built_tree(rr);
     45     }
     46     if(wl!=0 )
     47     {
     48         Node* lu=newnode();
     49 
     50         lu->w=wl;
     51         lu->d=dl;
     52         lu->have_value=true;
     53         root->left=lu;
     54     }
     55     if(wr!=0)
     56     {
     57         Node* ru=newnode();
     58 
     59         ru->w=wr;
     60         ru->d=dr;
     61         ru->have_value=true;
     62         root->right=ru;
     63     }
     64     return root;
     65 }
     66 
     67 
     68 int postsum(Node* root)
     69 {
     70     
     71 }
     72 
     73 
     74 int main()
     75 {
     76     for(;;)
     77     {
     78         Node *root;
     79         remove_tree(root);
     80         root=newnode();
     81 
     82         built_tree(root);
     83 
     84         Node* rl=root->left;
     85         Node* rr=root->right;
     86 
     87         int pl=0;
     88         postsum(rl);
     89         int pr=0;
     90         postsum(rr);
     91 
     92         //cout<<pl<<" "<<pr<<endl;
     93 
     94         if((rl->d)*pl==(rr->d)*pr)
     95             cout<<"YES"<<endl;
     96         else
     97             cout<<"NO"<<endl;
     98         
     99     }
    100 }
    #include <iostream>
    #include <cstdio>
    
    using namespace std;
    
    bool solve(int& w)
    {
        int wl,wr,dl,dr;
        cin>>wl>>dl>>wr>>dr;
    
        bool b1=true,b2=true;
        if(!wl) b1=solve(wl);
        if(!wr) b2=solve(wr);
    
        w=wl+wr;
    
        return b1 && b2 && (wl*dl==wr*dr);
    }
    
    int main()
    {
        int w;
        bool bvar=solve(w);
    
        if(bvar)
            printf("%s
    ", "YES");
        else
            printf("%s
    ", "NO");
    }
    Yosoro
  • 相关阅读:
    Vector 、ArrayList、LinkedList比较
    MySQL主从复制
    多浏览器兼容flv视频播放HTML
    [转]javascript对联广告、漂浮广告封装类,多浏览器兼容
    ASP获取json天气信息
    IIS6的SSL配置,如何配置SSL到登陆页,如何将SSL证书设置成受信任的证书
    Web Service初探
    算法之逆序对
    算法之数组和问题
    重读算法导论之算法基础
  • 原文地址:https://www.cnblogs.com/tclan126/p/7271832.html
Copyright © 2020-2023  润新知