begin

LintCode 601: Flatten 2D Vector (iterator经典题)

陌路散爱 提交于 2019-12-19 00:57:13
Flatten 2D Vector Implement an iterator to flatten a 2d vector. Example Example 1: Input:[[1,2],[3],[4,5,6]] Output:[1,2,3,4,5,6] Example 2: Input:[[7,9],[5]] Output:[7,9,5] 注意这题不能用一个2D vector的copy,不然空间不满足要求。 解法1:利用C++的iterator 这题学到了很多iterator的知识。 一维和二维vector都有iterator,一维vector的iterator就好比指向每个元素的指针,二维vector的iterator就好比指向其中每个一维vector的指针。 空的一维和二维vector的begin()和end()相等。 *(iter++)先返回*iter,然后iter++。 跟*(i++)一回事。 iter像指针,但不能与指针比较。一个未初始化的iter不能与NULL比较。如果非要初始化,可将其初始化为对应container的end()。 即vector a = {1,2,3,4,5}; vector::iterator iter = a.end(); 代码如下: class Vector2D { public : Vector2D ( vector < vector <

leetcode 47. 全排列 II

╄→尐↘猪︶ㄣ 提交于 2019-12-18 11:29:05
给定一个可包含重复数字的序列,返回所有不重复的全排列。 示例: 输入: [1,1,2] 输出: [ [1,1,2], [1,2,1], [2,1,1] ]思路和上一题类似,知识这里要判断当前元素是否在前面出现过http://www.cnblogs.com/mr-stn/p/8996779.html 1 class Solution { 2 public: 3 bool contain(vector<int>nums, int i, int j){ 4 for(int k = i; k < j; k++) 5 if(nums[j] == nums[k]) return true; 6 return false; 7 } 8 void permuteUnique(vector<int>&nums, vector<vector<int>>& ans, int begin, int end){ 9 if(begin == end){ 10 ans.push_back(nums); 11 return; 12 }else{ 13 for(int i = begin; i <= end; i++){ 14 if(contain(nums, begin, i)) continue; 15 swap(nums, begin, i); 16 permuteUnique(nums, ans,

实验四

吃可爱长大的小学妹 提交于 2019-12-18 10:10:09
一、 实验目的 用高级语言完成一个主存空间的分配和回收程序,以加深对动态分区分配方式及其算法的理解。 二、 实验内容和要求 实验内容 根据指定的实验课题,完成设计、编码和调试工作,完成实验报告。 实验要求 采用连续分配方式之动态分区分配存储管理,使用首次适应算法、循环首次适应算法、最佳适应算法和最坏适应算法4种算法完成设计。 (1)**设计一个作业申请队列以及作业完成后的释放顺序,实现主存的分配和回收。采用分区说明表进行。 (2)或在程序运行过程,由用户指定申请与释放。 (3)设计一个空闲区说明表,以保存某时刻主存空间占用情况。 把空闲区说明表的变化情况以及各作业的申请、释放情况显示。 三、 实验方法、步骤及结果测试 1. 源程序名: 4.c 可执行程序名: 4.exe 2. 原理分析及流程图 主要总体设计问题。 参考数据结构: #include<stdio.h> #include<conio.h> #include<string.h> #define MAX 24 struct partition{ char pn[10]; int begin; int size; int end; //////// char status; ////////// }; typedef struct partition PART; #include<stdio.h> #include

《C++标准程序库》学习笔记3 -- 第五章

こ雲淡風輕ζ 提交于 2019-12-18 00:16:20
这一章主要是大概的介绍一下容器,迭代器,算法,仿函数等,为6,7,8,9章的概括。 1.(P74) STL的基本概念就是将数据和操作分离。数据由容器类别加以管理,操作则由可定制的算法定义。迭代器在两者之间充当粘合剂。任何算法都可以和任何容器交互运作。 2.(P75) 容器(Containers) 容器类别用来管理一组元素。 总的来说,容器分为两大类: ①.序列式容器(Sequence containers),是可序(ordered)群集。包括vector, queue, list。 ②.关联式容器(Associative containers),是已序(sorted)群集。包括set, multiset, map, multimap。 关联式容器依据特定的排序准则,自动为其元素排序。排序准则以函数形式呈现,用以比较元素值(value)或元素键(key)。缺省情况以operator< 进行比较,不过也可以自己提供比较函数,定义出不同的排序准则。 eg set < int > tk1; // 从小到大排序 set < int , greater < int > > tk2; // 从大到小排序 序 通常关联式容器是由二叉排序树实作出来的。 另外,C++标准库还提供了容器配接器(Container Adpters), stack, queue, priority queue. 3.

POJ 1018

折月煮酒 提交于 2019-12-17 18:14:04
题目大意:多组询问,问每组,要买n种零件,每种零件都有各自的m种选择,每种零件有两种属性:带宽b和价格p,求一种方案,有max(min(all_b)/sum(p)) 解:discuss各种奇葩,无聊回去研究一下。我的做法是按b值排序,看b最大可以选多少(用多少b以上的能把n种零件买齐),如果fin点价格相同,则需要特殊处理,交换那些key点(使零件都有的点),再贪心,min[i] = 从i买到n的最小价格,然后枚举价格,从1 to fin即可,其实挺乱的,还是见程序吧。 View Code 1 //Communication system 2 const 3 maxlen=10001; 4 inf='1.txt'; 5 type 6 data=record 7 b, p, col: longint; 8 end; 9 var 10 a: array[0..maxlen]of data; 11 min: array[0..maxlen]of longint; 12 tmp: array[0..100]of longint; 13 fin, tot, test, wugu, m, n: longint; 14 ans: extended; 15 procedure qsort(b, e: longint); 16 var 17 i, j, x: longint; 18 k: data;

在shell中做数值计算

六眼飞鱼酱① 提交于 2019-12-17 18:01:33
shell自带的计算符号只能计算整数 例如: echo $[1+1] echo $((1+2)) 还有let命令,expr命令 但是都并不好用,只能进行整数的运算,如果要计算小数,可以使用bc命令工具 另外其实除了bc,还可以使用awk来进行数值计算,功能更加强大,而且方便,因为awk本身就是一门编程语言,主要用于对文本的处理,对数据的处理自然不在话下! 要想使用awk计算,建议使用BEGIN模式,熟悉awk的人知道awk的命令行语法是这样的: awk [选项] ‘BEGIN{执行语句...}{执行语句...}END{执行语句...}’ 文本文件 在单引号里面的三个大括号并不是都要同时有的,都是可选的。 BEGIN后面的大括号跟的是预处理语句,在执行时,并没有读取文本数据,一般就是定义初始化变量用的;中间的大括号是真正在处理文本的语句,END后面的大括号是处理完所有语句的输出总结。 如果用来做数值计算,可以用BEGIN模式就可以了,这样不需要跟任何标准输入 例如: awk 'BEGIN{print 1.2+2}' awk 'BEGIN{print 100-50}' awk 'BEGIN{print 1.2*2}' awk 'BEGIN{print 100/50}' awk 'BEGIN{print 2**2}' awk 'BEGIN{print 3+2*1}' 来源: 51CTO

ZYNQ学习之按键消抖

可紊 提交于 2019-12-17 05:49:50
参考链接:米联客教程: https://blog.csdn.net/jinry001/article/details/9969498 按键消抖子程序: module key # ( parameter CLK_FREQ = 100000000 ) ( input clk_i, input key_i, output key_cap ); //10ms,100MHz时钟对应计数值,1/100_000_000*val=10*10^-3 parameter CNT_10MS = (CLK_FREQ/100 - 1'b1); parameter KEY_S0 = 2'd0; parameter KEY_S1 = 2'd1; parameter KEY_S2 = 2'd2; parameter KEY_S3 = 2'd3; reg [24:0] cnt10ms = 25'd0; reg [1:0] key_s = 2'b0; reg [1:0] key_s_r = 2'b0; wire en_10ms ; //产生10ms计数时钟 assign en_10ms = (cnt10ms == CNT_10MS); //按键按下的检测逻辑, assign key_cap = (key_s==KEY_S2)&&(key_s_r==KEY_S1); always @(posedge clk_i

MySQL学习之触发器

萝らか妹 提交于 2019-12-17 00:39:47
目录 触发器 创建 删除 触发器 如果你想在对表进行增(insert)、删(delete)、改(update)操作的前(before)后(after) 触发某种特定的行为的时候,就可以使用触发器 (没有查select) 创建 # 创建: # 插入前 CREATE TRIGGER tri_before_insert_tb1 BEFORE INSERT ON tb1 FOR EACH ROW BEGIN . . . END # 插入后 CREATE TRIGGER tri_after_insert_tb1 AFTER INSERT ON tb1 FOR EACH ROW BEGIN . . . END # 删除前 CREATE TRIGGER tri_before_delete_tb1 BEFORE DELETE ON tb1 FOR EACH ROW BEGIN . . . END # 删除后 CREATE TRIGGER tri_after_delete_tb1 AFTER DELETE ON tb1 FOR EACH ROW BEGIN . . . END # 更新前 CREATE TRIGGER tri_before_update_tb1 BEFORE UPDATE ON tb1 FOR EACH ROW BEGIN . . . END # 更新后 CREATE TRIGGER

linux awk(good)

我只是一个虾纸丫 提交于 2019-12-16 22:22:56
一个用awk处理字符串的例子: #!/bin/bash source="nokia201703148855" preffixStr=$(echo $source |awk '{print substr($0,0,13);}') echo "preffixStr:"$preffixStr suffixNum=$(echo $source |awk '{print substr($0,13,4);}') echo "suffixNum:"$suffixNum echo $preffixStr$(($suffixNum+1)) 要点分析: 接收awk处理后的结果: preffixStr=$(echo $source |awk '{print substr($0,0,13);}') echo "preffixStr:"$preffixStr http://www.unix.com/shell-programming-and-scripting/173237-awk-take-variables-out-shell.html 加法运算: $(($suffixNum+1)) http://www.360doc.com/content/11/0921/17/834950_150153766.shtml $()${}的用法: 在 bash shell 中,$( ) 与 ` ` (反引号)

vim syntax 语法 插件 verilog begin end 匹配

空扰寡人 提交于 2019-12-16 18:03:01
Vim Syntax Plugin for Verilog and SystemVerilog https://github.com/vhda/verilog_systemverilog.vim https://stackoverflow.com/questions/27498221/vim-highlight-matching-begin-end using matchit. This script is part of vim runtime and can easily be loaded by adding the following line to your .vimrc: runtime macros/matchit.vim The standard Verilog filetype plugin already includes the matchit configuration you require: " Let the matchit plugin know what items can be matched. if exists("loaded_matchit") let b:match_ignorecase=0 let b:match_words= \ '\<begin\>:\<end\>,' . \ '\<case\>\|\<casex\>\|\