k***t 发帖数: 276 | 1 以前看见一个版上大拿做的一个O(N)的find/union。不过那个是找
最长连续子序列,所以并集时只需更新边界元素,且并集操作只会
在边界发生。动态更新最长序列,只需扫描一遍即可。
下面是原贴。不知可否借鉴得上?
发信人: battlesc (zerg), 信区: JobHunting
标 题: Re: G题讨论
发信站: BBS 未名空间站 (Fri Jul 15 11:37:33 2011, 美东)
#include
#include |
|
k***t 发帖数: 276 | 2 参照网上的思路,写了一个wildcard match。
做面试用还算简洁。谁给Review一下?
#include
using namespace std;
bool match(char* in, int iidx, char* ptn, int pidx)
{
if (!in || !ptn) return false;
// base case
if (!in[iidx] && !ptn[pidx]) return true;
if (!ptn[pidx]) return false;
if (!in[iidx]) {
while(ptn[pidx]) if (ptn[pidx++]!='*') return false;
return true;
}
if (ptn[pidx]=='?' || ptn[pidx]==in[iidx])
return match(in, iidx+1, ptn, pidx+1);
if (ptn[pidx]==... 阅读全帖 |
|
k***t 发帖数: 276 | 3 #3 GetMedian() 感觉写得有点复杂,insert()应该还可以简化。
==============
#include
#include
#include
#include
using namespace std;
class Median {
public:
Median() : maxhc(0), minhc(0) {}
~Median() {}
void insert (int v) {
if (maxhc==minhc) {
if (maxh.empty() || maxh.top()>=v)
_enQ(true, v);
else _enQ(false, v);
} else if (maxhc>minhc) {
if (maxh.top()>v) {
_enQ(false, _deQ(true));
_enQ(true, v);
} e... 阅读全帖 |
|
k***t 发帖数: 276 | 4 参照网上的思路写了一个。哪位大拿给Review一下。谢了。
我平时只写C,不用C++。所以可能有初级错误:)
#include
#include // HashMap
#include
using namespace std;
// cache entry
struct Entry {
int v; // dummy structure
};
class LRU {
private:
list > mlist;
unordered_map >::iterator> mht;
int cnt;
const static int MAX_SIZE = 10000;
public:
LRU () {cnt=0;}
~LRU () {}
void addEntry (string mURL, Entry mEntry) {
mlist.push_fron... 阅读全帖
|
|
N**********d 发帖数: 9292 | 5 【 以下文字转载自 Programming 讨论区 】
发信人: NeedForSpeed (working~~~~~), 信区: Programming
标 题: 问个缺少逗号的数组赋值问题
发信站: BBS 未名空间站 (Sun Jan 15 17:05:58 2012, 美东)
源程序是:
#include
#include
using namespace std;
int main(int argc, char * argv[])
{
std::string m_ColumnName [] =
{
"str1",
"str2"
"last_one"
};
cout << m_ColumnName[0].substr(0,4) << endl;
cout << m_ColumnName[1].substr(0,4) << endl;
cout << ... 阅读全帖 |
|
m*********e 发帖数: 13 | 6 Q1: left = 0, down = 1
#include
#include
using namespace std;
void pathes(int x, int y, string s){
if( x == 0 && y == 0){
cout<
return;
}
if(x > 0){
pathes(x-1, y, s+"0");
}
if(y > 0){
pathes(x, y-1, s+"1");
}
};
int main(int argc, char **argv){
pathes(3, 2, "");
}
If some points are not allowed, check it before move left or down. |
|
a********n 发帖数: 1287 | 7 #include
using namespace std;
// 0 means right, 1 means down
void AllPath(int N, int row, int col, int path[], int idx) {
if(row==N-1 && col==N-1) {
for(int i=0; i<2*N-2; i++) {
cout << path[i] << " ";
}
cout << endl;
}
// go down
if(row != N-1) {
path[idx] = 1;
AllPath(N, row+1, col, path, idx+1);
}
// go right
if(col != N-1) {
path[idx] = 0;
AllPath(N, row, col+1, path, idx+1);
}
}
in... 阅读全帖 |
|
S**I 发帖数: 15689 | 8 ☆─────────────────────────────────────☆
sharc (sharc) 于 (Mon Aug 22 15:15:14 2011, 美东) 提到:
刚从G家onsite归来。新鲜面经奉上。
总共5轮,4轮technical interview, 一个thesis discussion。在technical里,有编
程题,有open design。我记得的问题有:
1. 编程题:一堆字符串。找longest common prefix。
我的方法就是找最短的字符串,对它的每个字符,逐个与其他字符串对应位置比较。(
求更好方法)
2. open question: 一堆文件,size差别极大( from KB to many GB). 找出所有内
容相同的文件。
3. 编程题: 有一个observer 类,监视另一个类foo 的成员变量的值,每当那个值被
修改,就要调用 该observer.updated() 方法。需要实现 foo.registerObserver(ob)
, foo.unregisterObserver( ob )... 阅读全帖 |
|
w*******r 发帖数: 2953 | 9 程序和运行结果如下,不考虑瘸子的情况。
#include
using namespace std;
class human
{
public:
human();
human(bool, bool);
~human(){};
bool getEyeState();
bool getMouthState();
char *getHealthDesc();
private:
bool isBlind;
bool isDeaf;
};
human::human()
{
isBlind = 0;
isDeaf = 0;
}
human::human(bool blind, bool deaf)
{
isBlind = blind;
isDeaf = deaf;
}
bool human::getEyeState()
{
return isBlind;
}
bool human::getMouthState()
{
return isDeaf;
}
char *hu... 阅读全帖 |
|
w*******r 发帖数: 2953 | 10 改完的程序在下面,这下疾病可以随便定义了,也可以治病了。
想给给个病安个计数器,记得好像有个什么关健词可以让所有的object改动的都是
同一个变量而不是各自的变量(counter),记不起来了,所以这个counter打印得
不对,有知道的告诉我一声。
#include
#include
#include
using namespace std;
class Disability
{
public:
Disability(){counter = 0; };
Disability(string, string);
~Disability(){};
string get_disease_name() const { return name; };
string get_disease_desc() const { return desc; };
void incr_sick_human_counter() {counter++; };
unsigned long get_hum... 阅读全帖 |
|
l****c 发帖数: 838 | 11 You can write a simple test case, cannot you?
my test shows no difference:
=========================================
#include
using namespace std;
class A {
public:
A() {
cout<<"ctr"<< endl;
throw 1;
}
~A() {
cout <<"dstr"<< endl;
}
};
int main()
{
A* pa = new A;
delete pa;
return 0;
}
==========================
Both terminated. |
|
h****n 发帖数: 1093 | 12 share一下我的代码,欢迎指正:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication4
{
class ExcelIndexConversion
{
static int CharToInt(char c)
{
if (c < 'A' || c > 'Z')
return -1;
return (int)(c - 'A' + 1);
}
static char IntToChar(int digit)
{
if (digit < 1 || digit > 26)
return '#';
return (char)(digit + 'A' -1);
... 阅读全帖 |
|
l*****a 发帖数: 559 | 13 I tried. Your code is not working.
#include
#include
#include
#include
#include
#include
using namespace std;
double GetMedian (int* a, int n, int* b, int m, int k)
{
assert(a && b);
if (n <= 0) return b[k-1];
if (m <= 0) return a[k-1];
if (k <= 1) return min(a[0], b[0]);
if (b[m/2] >= a[n/2])
{
if ((n/2 + 1 + m/2) >= k)
return GetMedian(a, n, b, m/2, k);
else
return GetMe... 阅读全帖 |
|
c**********e 发帖数: 2007 | 14 完整程序(C++):
#include
#include
#include
using namespace std;
long maxCount(int s, int p[], int n) {
long* count = new long[s+1];
count[0]=1;
for(int i=1;i<=s;i++) {
count[i]=0;
for(int j=0;j
if(i-p[j]>=0) count[i]+= count[i-p[j]];
}
}
return count[s];
}
int main() {
int x[3];
x[0]=2;
x[1]=3;
x[2]=7;
cout << maxCount(47,x,3) << endl;
return 0;
} |
|
c**********e 发帖数: 2007 | 15 完整程序(C++):
#include
#include
#include
using namespace std;
long maxCount(int s, int p[], int n) {
long* count = new long[s+1];
count[0]=1;
for(int i=1;i<=s;i++) {
count[i]=0;
for(int j=0;j
if(i-p[j]>=0) count[i]+= count[i-p[j]];
}
}
return count[s];
}
int main() {
int x[3];
x[0]=2;
x[1]=3;
x[2]=7;
cout << maxCount(47,x,3) << endl;
return 0;
} |
|
q******8 发帖数: 848 | 16 主要问c++。。。。貌似是我一面时候答c++还不错,结果那个家伙写这个candidate c+
+很好。。好。。。。结果悲剧了
问了很多,以下是我记住的
new, malloc区别
free, delete区别
new到一半发现memory没了咋办
啥叫rewind
copy constructor和assignment的区别
template的概念,如果有一个int类型的template一个string的,能否merge
exception,throw,try catch的概念
多继承的问题和如何解决
static var,static方法,static关键字的用法。
namespace的概念
还有一些不记得了
==更新==
还讨论了GC的构造,mark sweep,pointer和handle的区别之类有关memory managment的概
念。
基本被问了个底朝天。。。
最后一道设计题。请设计一个school system。这个没啥具体要求,天马行空,主要看
你怎么break down这个问题。
唉。。。。。。。 |
|
R******9 发帖数: 267 | 17 #include
#include
#include
using namespace std;
void PrintMaxInWindow(int a[], int n, int k){
set s;
int i=0;
for(;i
s.insert(a[i]);
set::reverse_iterator rit;
for(;i<=n;i++){
rit = s.rbegin();
cout<<*rit<<"\t";
s.erase(a[i-k]);
s.insert(a[i]);
}
} |
|
R******9 发帖数: 267 | 18 #include
#include
#include
using namespace std;
void PrintMaxInWindow(int a[], int n, int k){
set s;
int i=0;
for(;i
s.insert(a[i]);
set::reverse_iterator rit;
for(;i<=n;i++){
rit = s.rbegin();
cout<<*rit<<"\t";
s.erase(a[i-k]);
s.insert(a[i]);
}
} |
|
x*******5 发帖数: 152 | 19 证明也许比较难,但是我是这样做的:
/*Description: given three arrays A, B,C, find three indices i,j, k such that
the value l=max((a-b),(b-c), (c-a)) is minimized
Input: vector a, vector b, vector c
Output: void
K.O.: sorting, merge sort variant
*/
int Array::Find_value_brute(vector a, vector b, vector c){
int n=a.size(),m=b.size(),p=c.size(),l=INT_MAX;
for(int i=0;i
for(int j=0;j
for(int k=0;k
int ta=abs(a[i]-b[j]),tb=abs(b[j]-c[k]),tc=ab... 阅读全帖 |
|
x*******5 发帖数: 152 | 20 证明也许比较难,但是我是这样做的:
/*Description: given three arrays A, B,C, find three indices i,j, k such that
the value l=max((a-b),(b-c), (c-a)) is minimized
Input: vector a, vector b, vector c
Output: void
K.O.: sorting, merge sort variant
*/
int Array::Find_value_brute(vector a, vector b, vector c){
int n=a.size(),m=b.size(),p=c.size(),l=INT_MAX;
for(int i=0;i
for(int j=0;j
for(int k=0;k
int ta=abs(a[i]-b[j]),tb=abs(b[j]-c[k]),tc=ab... 阅读全帖 |
|
f*******l 发帖数: 66 | 21 #include
#include
using namespace std;
bool isValid( char currentChar,int x, int y, int columnSize, int
rowSize,
char desiredChar, bitset <20> mybitset )
{
if(x < 0 || x > columnSize || y < 0 || y > rowSize )
{
return false ;
}
if ( mybitset[x*columnSize+y] == 1 )
{
return false;
}
if ( currentChar != desiredChar)
{
return false ;
}
return true ;
}
bool moveforward( int rowSize, int columnSize, char Array[][4], int... 阅读全帖 |
|
w*******s 发帖数: 96 | 22 有没有对Careercup的C/C++的Solution感兴趣的同学啊?准备做几个样题和我的实现放
上来大家讨论讨论:先来一个拍拍
////////////////////////////////////////////////////////////////////////////
////////
// Problem 3.6: (第4版)
//
// Analysis and points:
// 1. You are asking to implement one sort algorithm with input
parameter is a stack.
// 2. If we allow to use extra space, we can use another stack to
help. Each time, we
// insert the top element into the proper postion. The stack is
used each other as
// buffer ... 阅读全帖 |
|
w*******s 发帖数: 96 | 23 再来一个拍拍:
////////////////////////////////////////////////////////////////////////////
////////
// Problem 1.1:
// Analysis and points:
// 1. strig operation(scan)
// 2. How to determine whether it's duplicate string?
// Method 1: using one hashtable, if it's already in
hashtable,
// it's duplicate, otherwise add into hashtable.
Complexity O(n)
// Method 2: for each characer, check whether it's duplicated
// ... 阅读全帖 |
|
j*******g 发帖数: 4 | 24 见过很多次这个题目了,一直没有招,下面写了一个又臭又长的, 方法很笨, 求建议
, 欢迎批评和指正
这样的代码面试可以通过吗?
////////////////////////////////////////////////////////////////
#include
#include
using namespace std;
//假设16位的整型
// -32768 , +32767
const char MAX_INT[] = "32767";
const char MIN_INT[] = "32768";
const int MAX_STRLEN = 5;
bool my_atoi(const char *str, int &res)
{
if(str == NULL)
{
cout << "Invalid pointer" << endl;
return false;
}
int index = 0;
if(str[index] == '-' ||... 阅读全帖 |
|
y*****z 发帖数: 9 | 25 我用了 基序排序, 这样能达到线性时间。
复杂度是 max(O(M),O(N))
M是date的最大的数
N是数组的长度
code wins arguments.
欢迎拍砖
#define GREEDY_EVENT
#ifdef GREEDY_EVENT
#include
#include
#include
using namespace std;
int main(){
const int n = 5;
int sstart[n] = {1,8,2,11,15};
int eend[n] = {4,9,6,14,18};
for(int i=0;i
cout<<"("<
}
cout<
const int MAXDATE = 100;
int radix[MAXDATE]={0};
int final[n];
for(int ... 阅读全帖 |
|
y*****z 发帖数: 9 | 26 我用了 基序排序, 这样能达到线性时间。
复杂度是 max(O(M),O(N))
M是date的最大的数
N是数组的长度
code wins arguments.
欢迎拍砖
#define GREEDY_EVENT
#ifdef GREEDY_EVENT
#include
#include
#include
#include
using namespace std;
int main(){
srand(size_t(time(0)));
const int n = 5;
int sstart[n] = {1,8,2,11,15};
int eend[n] = {4,9,6,14,18};
for(int i=0;i
for(int i=0;i
for(int i=0;i
cout<<"("<阅读全帖 |
|
p*i 发帖数: 411 | 27 #include
#include
#include
#include
using namespace std;
inline void swap(int &a, int &b) {
int t = a; a = b; b = t;
}
int partition(vector& work, vector& indices, int p, int q) {
// use work[q] to partition the array
const int x = work[q];
int i = p-1;
for (int j = p; j < q; j++) {
if (work[j] < x) {
i++;
swap(work[i], work[j]);
swap(indices[i], indices[j]);
}
}
i++;... 阅读全帖 |
|
i**********e 发帖数: 1145 | 28 我刚在linux上运行了,没有这方面的问题,不过我的程序是C++ 不是Java。
我测试了你的算法,返回结果都算满意,而且运行越多次,返回的结果越接近理想的 p
值。
你的算法不单简洁,而且复杂度是最优的,递归是 average 两次就返回答案。
expected # calls = 1*0.5 + 2*0.5^2 + 3*0.5^3 + ...
= Summation( k * 0.5^k ), k = 1 .. n
= 2 - (n+2)/2^n
When n = infinity,
expected # calls = 2
贴下code方便大家做测试:
#include
#include
#include
#include
using namespace std;
bool rand2() {
return (rand() % 2 == 0);
}
unsigned long long totalCalls = 0;
bool Prob2(double p, bool expected = tru... 阅读全帖 |
|
i**********e 发帖数: 1145 | 29 我刚在linux上运行了,没有这方面的问题,不过我的程序是C++ 不是Java。
我测试了你的算法,返回结果都算满意,而且运行越多次,返回的结果越接近理想的 p
值。
你的算法不单简洁,而且复杂度是最优的,递归是 average 两次就返回答案。
expected # calls = 1*0.5 + 2*0.5^2 + 3*0.5^3 + ...
= Summation( k * 0.5^k ), k = 1 .. n
= 2 - (n+2)/2^n
When n = infinity,
expected # calls = 2
贴下code方便大家做测试:
#include
#include
#include
#include
using namespace std;
bool rand2() {
return (rand() % 2 == 0);
}
unsigned long long totalCalls = 0;
bool Prob2(double p, bool expected = tru... 阅读全帖 |
|
R******9 发帖数: 267 | 30 #include
#include
using namespace std;
void printCoins(const vector&coins, int index, vectorsoFar, int
val)
{
if(val<0)
return;
if(val==0){
for(int i=soFar.size()-1; i>=0; i--)
cout<
cout<
}
for(int i=index; i>=0; i--){
soFar.push_back(coins[i]);
printCoins(coins,i,soFar,val-coins[i]);
soFar.pop_back();
}
}
void printCoins(const vector&coins, int val){
vector soFar;
printCoins(coins,coins.size(... 阅读全帖 |
|
q******0 发帖数: 15 | 31 See the code below. I am confused that "len = 5" from main function, "len =
4" from RemoveDuplicate function. When does terminate '\0' count? Thanks.
#include
using namespace std;
void RemoveDuplicate(char str[])
{
int len = sizeof(str)/sizeof(str[0]);
cout << "len = " << len << endl;
}
int main()
{
char a[] = "abcd";
int len = sizeof(a)/sizeof(a[0]);
cout << "len = " << len << endl;
RemoveDuplicate(a);
return 0;
} |
|
p*i 发帖数: 411 | 32 来自主题: JobHunting版 - 上一道题吧 #include
#include
#include
using namespace std;
void process(const string& str) {
stack s, s1;
for (unsigned i = 0; i < str.size(); i++) {
if ('(' == str[i]) {
s.push(i);
} else {
if (!s.empty()) {
unsigned left = s.top(); s.pop();
unsigned& right = i;
if (s1.empty() || (s1.top()+1 < left)) {
s1.push(left);
s1.push(right);
... 阅读全帖 |
|
p*i 发帖数: 411 | 33 来自主题: JobHunting版 - 上一道题吧 感谢帮忙测试。我的已经通过了
基本思想是用一个stack s0,遇到'('就push当前的index,遇到')'就pop,说明发现一
个'('-')' pair
此时left和right分别记录这个pair的左边'('的位置和右边')'的位置
同时还有一个额外的s1,记录当前已经遇到的所有pair的左右位置
每次发现一个新的pair (lnew, rnew),就与s1栈顶的pair(假设是lold, rold)进行比较
如果lnew == rold+1,说明他们是()()这种情况,所以需要合并
如果lnew < rold+1,说明是(())这种情况,也需要合并
一旦进行了第一个合并,就需要继续检查s1直到桟为空或者不能继续合并为止,应付()
(())这种情况
下面是我在leetcode上用的code
#include
using namespace std;
class Solution {
public:
int longestValidParentheses(string s) {
Start typing your ... 阅读全帖 |
|
c***p 发帖数: 221 | 34 我觉得就是字符串的匹配问题吧。 用u匹配s的每个等长字串,看看有多少个字符不同
。考虑到u的开始和结束的特殊情况,可以在u的前后加上足够的pad.
#include
#include
using namespace std;
const char PAD = '$';
int match(string p, string q, size_t len)
{
int count = 0;
for(size_t i = 0; i < len; i++){
if (p.at(i) != q.at(i)){
count++;
}
}
return count;
}
size_t edit (string from, string to, string& sub)
{
string pad;
pad.append( to.length()-1, PAD)... 阅读全帖 |
|
c***p 发帖数: 221 | 35 我觉得就是字符串的匹配问题吧。 用u匹配s的每个等长字串,看看有多少个字符不同
。考虑到u的开始和结束的特殊情况,可以在u的前后加上足够的pad.
#include
#include
using namespace std;
const char PAD = '$';
int match(string p, string q, size_t len)
{
int count = 0;
for(size_t i = 0; i < len; i++){
if (p.at(i) != q.at(i)){
count++;
}
}
return count;
}
size_t edit (string from, string to, string& sub)
{
string pad;
pad.append( to.length()-1, PAD)... 阅读全帖 |
|
l*********y 发帖数: 142 | 36 #include
#include
#include
#include
#include
#include
#include
using namespace std;
class Counter {
public :
Counter() {
counter = 0;
}
void increment() {
counter++;
}
void decrement() {
counter --;
}
int getValue() {
return counter;
}
private:
int counter;
};
class COWString {
public:
COWString() {
pointer = NULL;
rc = new Counter();
}... 阅读全帖 |
|
i**********e 发帖数: 1145 | 37 #include
#include
#include
#include
using namespace std;
void multiply(vector &A, vector &B, vector &C) {
int carry = 0;
int m = A.size(), n = B.size();
for (int i = 0; i < m; i++) {
carry = 0;
for (int j = 0; j < n; j++) {
assert(i+j < m+n);
C[i+j] += (A[i] * B[j]) + carry;
carry = C[i+j] / 10;
C[i+j] %= 10;
}
C[i+n] = carry;
}
}
string multiply(stri... 阅读全帖 |
|
i**********e 发帖数: 1145 | 38 #include
#include
#include
#include
using namespace std;
void multiply(vector &A, vector &B, vector &C) {
int carry = 0;
int m = A.size(), n = B.size();
for (int i = 0; i < m; i++) {
carry = 0;
for (int j = 0; j < n; j++) {
assert(i+j < m+n);
C[i+j] += (A[i] * B[j]) + carry;
carry = C[i+j] / 10;
C[i+j] %= 10;
}
C[i+n] = carry;
}
}
string multiply(stri... 阅读全帖 |
|
A**u 发帖数: 2458 | 39 #include
using namespace std;
bool is_same_bst(int* A, int m, int* B, int n)
{
if ( m == 0 & n == 0 )
return true;
if ( m != n)
return false;
else
{
if ( A[0] != B[0] ) // root
return false;
else
{
//看看,root,左右儿子数目是否一致
int smaller1 = 0;
int larger1 = 0;
for(int i = 1; i < m; ++i)
{
if ( A[i] < A[0] ) ++smaller1;
if ( A[i] > A[0] ) ++larger1;
}
int smaller2 = 0;
int larger2 = 0;
for(int i = 1; i < n; ++i)
{
if ( B[i] < B[0] ) ++smaller2;
if ( B[i] > B[0] ) ++larger2;
}
//递归
if (smalle... 阅读全帖 |
|
a***y 发帖数: 50 | 40 俺写了一个, 没有测试过只有1, 2, 或者0 的情况...
请高手指正...
思路就是维护了三个指针p0, p1, p2, 分别指向了数组index最小的0, 1, 2值所在位置,
然后遍历的过程中,不断swap(值和指针同时swap), 复杂度为O(n), 常数空间.
请高手们多指正了!
#include
#include
using namespace std;
class MITbbSolver
{
public:
MITbbSolver() {}
virtual ~MITbbSolver() {}
public:
void swap_pv(int* &p1, int* &p2) {
int tmp = *p1;
*p1 = *p2;
*p2 = tmp;
int* p = p1;
p1 = p2;
p2 = p;
return;
}
void sort_012_array(int* ... 阅读全帖 |
|
y****e 发帖数: 1012 | 41 Given an array of strings, return all groups of strings that are anagrams.
Note: All inputs will be in lower-case.
为啥string vector太大的时候结果是错的呢?
大家帮忙看看吧~~
谢谢!
#include
#include
#include |
|
g*******s 发帖数: 2963 | 42 这个行不?constructor里我pass了container(这里是vector),因为我不知道没有
container该怎么写hasNext()? 如果假设原始iterator已经有hasNext()和next()了,
那这俩函数应该不用改吧?看成black box就行了,直接在peek里引入个temp变量就行
了。
#include
#include
using namespace std;
template
class Wrapper {
public:
Wrapper(vector &v,
typename vector::iterator it)
:_vec(v),_it(it),_tempIt(it){
_it = _vec.begin();
};
bool hasNext(){
_tempIt = _it;
return (++_tempIt)!=_vec.end();
};
... 阅读全帖 |
|
h*****g 发帖数: 312 | 43 感觉挺简单的,不知道我的理解是否对
#include
#include
#include
#include
#include |
|
h*****g 发帖数: 312 | 44 感觉挺简单的,不知道我的理解是否对
#include
#include
#include
#include
#include |
|
l*********8 发帖数: 4642 | 45 下面是我的程序
vector a 存储intervals [a[0] a[1]), [a[2] a[3]), [a[4] a[5]) ....
开始写在纸上,后来在电脑上调试才发现有几个bugs. 一遍写对不容易啊:-(
#include
#include
using namespace std;
void MergeToIntervals(vector & a, int left, int right)
{
int leftIdx = lower_bound(a.begin(), a.end(), left) - a.begin();
int rightIdx = upper_bound(a.begin(), a.end(), right) - a.begin();
int vectorSizeChange = 0;
int leftPos = -1; // left boundary's final position in the vector. -1 means it w... 阅读全帖 |
|
h*****g 发帖数: 312 | 46 感觉挺简单的,不知道我的理解是否对
#include
#include
#include
#include
#include |
|
h*****g 发帖数: 312 | 47 感觉挺简单的,不知道我的理解是否对
#include
#include
#include
#include
#include |
|
l*********8 发帖数: 4642 | 48 下面是我的程序
vector a 存储intervals [a[0] a[1]), [a[2] a[3]), [a[4] a[5]) ....
开始写在纸上,后来在电脑上调试才发现有几个bugs. 一遍写对不容易啊:-(
#include
#include
using namespace std;
void MergeToIntervals(vector & a, int left, int right)
{
int leftIdx = lower_bound(a.begin(), a.end(), left) - a.begin();
int rightIdx = upper_bound(a.begin(), a.end(), right) - a.begin();
int vectorSizeChange = 0;
int leftPos = -1; // left boundary's final position in the vector. -1 means it w... 阅读全帖 |
|
S******t 发帖数: 151 | 49 #include
#include
using namespace std;
char cross[3000][20];
int main()
{
int n,i,nc=0,sum=0,t[1000];
scanf("%d",&n);
for(i=0;i
scanf("%d",&t[i]);
sort(t,t+n);
for(i=n-1;i>=3&&2*t[1]
{
sprintf(cross[nc++],"%d %d\n",t[0],t[1]);
sprintf(cross[nc++],"%d\n",t[0]);
sprintf(cross[nc++],"%d %d\n",t[i-1],t[i]);
sprintf(cross[nc++],"%d\n",t[1]);
sum+=2*t[1]+t[0]+t[i];
}
for(;i>=2;i... 阅读全帖 |
|
c**********e 发帖数: 2007 | 50 这个Strategy design pattern的例子为什么人为得弄得这么复杂?
#include
#include
#include
using namespace std;
class Strategy;
class TestBed
{
public:
enum StrategyType
{
Dummy, Left, Right, Center
};
TestBed()
{
strategy_ = NULL;
}
void setStrategy(int type, int width);
void doIt();
private:
Strategy *strategy_;
};
class Strategy
{
public:
Strategy(int width): width_(width){}
void format()
{
char line[80], wo... 阅读全帖 |
|