pb

**2.5 多项式加法、乘法、输入、输出运算符重载

帅比萌擦擦* 提交于 2020-03-14 11:17:19
Polynomial.h #pragma once #include<iostream> using namespace std; class Term { friend class Polynomial; public: int a; int x; Term* next; }; class Polynomial { Term* first; public: Polynomial() { first = new Term(); first->x = NULL; first->a = NULL; first->next = nullptr; } void insert(int x, int a) { Term* p; p = first; Term* s; while (p->next != nullptr) { p = p->next; } s = new Term(); s->a = a; s->x = x; s->next = p->next; p->next = s; } int maxE() { Term* p; int max = -999999; p = first->next; while (p != nullptr) { if (p->x > max) { max = p->x; } p = p->next; } return max; } Term*

160. 相交链表

僤鯓⒐⒋嵵緔 提交于 2020-03-02 19:51:19
目录 160. 相交链表 1、试题介绍 2、java做法 2.1、双重循环 2.2、双指针做法 3、C语言做法 3.1、双重循环 3.2、双指针做法 160. 相交链表 1、试题介绍 编写一个程序,找到两个单链表相交的起始节点。 试题链接: https://leetcode-cn.com/problems/intersection-of-two-linked-lists/ 2、java做法 2.1、双重循环 public static ListNode getIntersectionNode(ListNode headA, ListNode headB) { if(headA == null || headB == null) return null; while (headA != null) { ListNode p = headB; while (p != null) { if(headA == p) { return headA; } p = p.next; } headA = headA.next; } return null; } 测试结果: 2.2、双指针做法 public static ListNode getIntersectionNode(ListNode headA, ListNode headB) { if(headA == null || headB ==

pb反编译之pbdviewer

你离开我真会死。 提交于 2020-02-26 14:45:10
一个新的工具,我记得之前还有个国外的pbspy也是做成半成品就收工了。 这个产品也是一个半成品,据测试目前能显示部分代码。但是半途停工了。基本上是另一个版本的depb。 我认为研究反编译是非常耗费时间的。但是更耗费时间的是对一种产品的持续改进,而不是让它停止在demo 0.01 改进者说,pbdviewer已经超越了depb和pbkiller这两款免费的反编译工具,接近pbdecompiler和shudepb这两款收费的反编译工具。但其实还不是,因为我的工具已经经过十年改进,并且因此还创建了另一个保护pbd的工具叫:pb混淆加密大师。并且经历过商用的用户数万次使用,一些细微bug的消除。还有些人工的修补方式方法等等。 而且还有一个powershield横在pbdviewer前面。powershield的反混淆也不是一朝一夕可以完美的。以至于十年了,我的反powershield算法也仅仅是写了60个函数步骤来逆向移动算式位置,并未能达到理想化的百分百。 可以从这里查看: http://www.powerbuilder.ltd http://www.pbdecompiler.com 来源: CSDN 作者: chengg0769 链接: https://blog.csdn.net/chengg0769/article/details/104515389

【2018年12月05日】滚动市盈率PE最低排名

对着背影说爱祢 提交于 2020-02-12 00:18:19
深康佳A(SZ000016) - 滚动市盈率PE:1.69 - 滚动市净率PB:1.13 - 滚动年化股息收益率:4.31% - 消费电子产品 - 深康佳A(SZ000016)的历史市盈率走势图 新钢股份(SH600782) - 滚动市盈率PE:2.90 - 滚动市净率PB:0.97 - 滚动年化股息收益率:1.74% - 钢铁 - 新钢股份(SH600782)的历史市盈率走势图 广宇发展(SZ000537) - 滚动市盈率PE:3.33 - 滚动市净率PB:1.38 - 滚动年化股息收益率:1.67% - 房地产开发 - 广宇发展(SZ000537)的历史市盈率走势图 三钢闽光(SZ002110) - 滚动市盈率PE:3.41 - 滚动市净率PB:1.34 - 滚动年化股息收益率:10.74% - 钢铁 - 三钢闽光(SZ002110)的历史市盈率走势图 南钢股份(SH600282) - 滚动市盈率PE:3.44 - 滚动市净率PB:1.07 - 滚动年化股息收益率:1.40% - 钢铁 - 南钢股份(SH600282)的历史市盈率走势图 兰州民百(SH600738) - 滚动市盈率PE:3.47 - 滚动市净率PB:1.48 - 滚动年化股息收益率:8.77% - 百货商店 - 兰州民百(SH600738)的历史市盈率走势图 韶钢松山(SZ000717) - 滚动市盈率PE:3

leetcode 160相交链表

人盡茶涼 提交于 2020-02-09 04:12:30
暴力解法当然可以遍历两个链表,不过time O(mn) space O(1)暂且不说, 方法一:双指针, time O(m+n),space O(1) 可以对比判断环形链表的快慢指针法。 这种方法构思十分十分十分巧妙,假设有两个链表,链表A: 1 2 3 * # 和链表B: a b c d e * # ,可以得出相交的第一个节点为*。那么A长度为la=5,*前面有lapre=3个元素;B长度为lb=7,*前面有lbpre=5个元素;可以发现lbpre+la=lapre+lb。 因此,只要用两个指针,每次前进一个节点,当pA到达末尾让其指向headB,当pB到达末尾让其指向headA那么当遍历10次后,两个指针都刚好到达*处,因此得到结果。 同时,针对无解的情况,记录两个链表的长度m和n,并且记录遍历次数i如果i>m+n时还没有满足条件的节点,可以断定无解;或者记录到达NULL的次数,如果第三次到达NULL之前还没有解,那么则无解。 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode

《数据结构》-算法2.7

独自空忆成欢 提交于 2020-02-05 03:45:29
void MergeList_Sq(SqList La, SqList Lb, SqList *Lc) { // 已知顺序线性表La和Lb的元素按值非递减排列。 // 归并La和Lb得到新的顺序线性表Lc,Lc的元素也按值非递减排列 ElemType *pa, *pa_last, *pb, *pb_last, *pc; pa = La.elem; pb = Lb.elem; Lc->listsize = Lc->length = La.length + Lb.length; // 不用InitList()创建空表Lc pc = Lc->elem = (ElemType *)malloc(Lc->listsize * sizeof(ElemType)); if (!Lc->elem) // 存储分配失败 exit(-1); pa_last = La.elem + La.length - 1; pb_last = Lb.elem + Lb.length - 1; while (pa <= pa_last && pb <= pb_last) // 表La和表Lb均非空 { // 归并 if (*pa <= *pb) *pc++ = *pa++; // 将pa所指单元的值赋给pc所指单元后,pa和pc分别+1(指向下一个单元) else *pc++ = *pb++; //

leetcode题解之相交链表

寵の児 提交于 2020-01-26 15:00:38
''' 编写一个程序,找到两个单链表相交的起始节点。 注意: 如果两个链表没有交点,返回 null. 在返回结果后,两个链表仍须保持原有的结构。 可假定整个链表结构中没有循环。 程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/intersection-of-two-linked-lists 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 ''' 双指针法算法说明:两个链表长度不一定相等,但是拼接在一起以后一定等长。pA和pB开始分别指向hA和hB,然后分别遍历两个链表。 假设链表hA比hB长,则当pB指向None时,pA仍指向链表hA的某个结点。接下来pA继续后移一位,pB指向hA。 二者继续后移,则当pA指向None时,pB仍指向链表hA的某个结点。接下来pB继续后移一位,pA指向hB,此时pA和pB对齐了。 之后二者继续后移,当pA==pB时,说明二者指向了同一结点(也可能同时指向了None),循环结束。 # Definition for singly-linked list. class ListNode: def __init__(self, x): self.val = x self.next = None class

160. Intersection of Two Linked Lists

走远了吗. 提交于 2020-01-17 02:00:58
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */ public class Solution { public ListNode getIntersectionNode ( ListNode headA , ListNode headB ) { int ALength = 0 , BLength = 0 ; ListNode pA = headA ; ListNode pB = headB ; int move = 0 ; while ( pA != null ) { ALength ++ ; pA = pA . next ; } while ( pB != null ) { BLength ++ ; pB = pB . next ; } pA = headA ; pB = headB ; move = ALength > BLength ? ( ALength - BLength ) : ( BLength - ALength ) ; if ( ALength > BLength ) { while ( move > 0 ) {

【2019秋冬】【LeetCode】160相交链表

笑着哭i 提交于 2020-01-11 02:46:12
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public : ListNode * getIntersectionNode ( ListNode * headA , ListNode * headB ) { ListNode * pA = headA , * pB = headB ; while ( pA != pB ) { pA = pA == NULL ? headB : pA - > next ; pB = pB == NULL ? headA : pB - > next ; } return pA ; } } ; 双指针:找公共链表节点,只要两个是相交的,路程长度一致,速度一致,一定会相交 Banana! 来源: CSDN 作者: 之井 链接: https://blog.csdn.net/mdzz_z/article/details/103895437

dynamic_cast(C++primer习题19.3)

南笙酒味 提交于 2019-12-25 22:06:04
首先经过自己手敲得打的答案是对,错,错 #include <iostream> using namespace std; class A{ public: A(){}; virtual ~A(){}; }; class B:public A{ public: B(){}; virtual ~B(){}; }; class C:public B{ public: C(){}; virtual ~C(){}; }; class D:public B,public A{ public: D(){}; virtual ~D(){}; }; int main() { //括号a // A *pa= new C; // B *pb=dynamic_cast<B*>(pa); // cout<<"转换完成"<<endl; //括号b // B *pb=new B ; // C *pc= dynamic_cast<C*>(pb); // cout<<"转换完成"<<endl; //括号c A *pa=new D; B *pb= dynamic_cast<B*>(pa); } (a) (b) 转换之后,pc为空,表示没有转换成功。B是C的基类。 (c) 模棱两可的转换。 来源: CSDN 作者: ThorKing01 链接: https://blog.csdn.net/ThorKing01