第六章习题

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

  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\n", "YES");
    else
        printf("%s\n", "NO");
}
时间: 2024-12-21 02:44:27

第六章习题的相关文章

Python核心编程(第二版) 第六章习题答案

6–1.字符串.string 模块中是否有一种字符串方法或者函数可以帮我鉴定一下一个字符串是否是另一个大字符串的一部分? 答:有,string.find(str,beg,end) 6–2.字符串标识符.修改例 6-1 的 idcheck.py 脚本,使之可以检测长度为一的标识符,并且可以识别 Python 关键字,对后一个要求,你可以使用 keyword 模块(特别是 keyword.kelist)来帮你. 1 #!/usr/bin/python 2 3 import string 4 impo

Perl语言入门:第六章习题:处理用户所指定的名字并汇报相应的姓。

37 print "\n----------------------------------_exercise_6_1--------------------------\n";     38 my %bless_function = ( #hash may be a lexical variable     39    "constructors" => "default_values",     40    "error_ha

核心编程第二版第六章习题

6–1. 字符串.string 模块中是否有一种字符串方法或者函数可以帮我鉴定一下一个字符串是否是另一个大字符串的一部分? 成员关系操作符in obj in seq 6–3. 排序(a) 输入一串数字,从大到小排列之.(b) 跟 a 一样,不过要用字典序从大到小排列之 (a) num=raw_input(">>") lisnum=list(num) list.sort(lisnum) print lisnum (b)没看懂 6–4. 算术. 更新上一章里面你的得分测试练习方

第六章 习题

6.1编写一个函数,它在一个字符串中进行搜索,查找所有在一个给定字符集中出现的字符,返回第一个找到的字符位置指针,未找到返回NULL #include <stdio.h> char * find_char(char const *source, char const *chars) { char const *sptr = source; char const *cptr = chars; if (sptr == NULL || cptr == NULL) { return NULL; } w

学习opencv 第六章 习题十三

用傅里叶变换加速卷积,直接上代码,Mat版是Copy他人的. CvMat版 1 #include "stdafx.h" 2 #include "cv.h" 3 #include "highgui.h" 4 #include <iostream> 5 6 using namespace cv; 7 using namespace std; 8 9 void speedy_convolution(const CvMat* A,const

python 核心编程 第六章习题

6-6 创建一个类似 string.strip() 函数 方法一 低效方法 大量复制和生成子串对象 def str_strip(s): while len(s)>=2: if s[0]==' ': s=s[1:] else: break while len(s)>=2: if s[-1]==' ': s=s[:-1] else: break if s==' ' or s=='': return '' else: return s 方法二: 转换成列表 def str_strip(s): if

C和指针 第十六章 习题

16.8 计算平均年龄 #include <stdlib.h> #include <stdio.h> #define MAX_LEN 512 int main() { int age; int totalAge; float avgAge; int peopleNum; FILE *file; char info[MAX_LEN]; char *infoPtr; file = fopen("D:/family.txt", "r"); //按行

C primer 第六章习题6.13

//编写程序包含8个元素的int类型数组,用for循环设置数组元素,用do while循环显示元素值. #include <stdio.h>int main(void){       int num[8],index,i,pow; for (index=0,i=0,pow=1;index<=7;index++){                pow*=2;                num[index]=pow;            do    {            i++;

动态规划习题--九章算法第五、六章习题

1.Triangle Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on the row below. For example, given the following triangle [ [2], [3,4], [6,5,7], [4,1,8,3] ] The minimum path sum from top to bott