i**********e 发帖数: 1145 | 1 其实我之前的帖子有一些错误.
例如,我的假设是integer是错的.
liveInBoston 也犯了这个错误,题目说 N, D, C, F is real numbers.
另外,我也漏了一些细节部分.
例如,忘了处理当中间没油了的情况.
但是基本思路还是对的.
我已经把我解这道题的详细思路 记录在这里:
http://www.ihas1337code.com/2011/01/nuts-in-oasis-interview-que
Below is my output for the sample test cases:
N: 1 D: 1 C: 1 F: 1 maxNuts: 0
N: 1 D: 2 C: 1 F: 1 maxNuts: 0
N: 1 D: 0.25 C: 1 F: 1 maxNuts: 0.75
N: 2 D: 1 C: 1 F: 1 maxNuts: 0.333333
N: ... 阅读全帖 |
|
i**********e 发帖数: 1145 | 2 我以前贴过,但不知道为什么找不回那个帖子了。
#include
#include
#include
using namespace std;
const int TAB_SPACE = 4;
void outputJSon(istream &in, int indentLevel) {
bool firstChar = true;
bool inBracket = false;
while (in) {
char c = in.get();
if (firstChar) {
cout << endl << setw(indentLevel) << c;
firstChar = false;
}
else {
cout << c;
}
if (c == '{') {
outputJSon(in, indentLevel+TAB_SPACE);
c = in.get();
assert(c == '... 阅读全帖 |
|
i**********e 发帖数: 1145 | 3 不是大侠,贴一贴我的代码,代码如果不好看 请多多包涵
恐怕只能 handle 以上的 sample test case。
基本思路就是递归,如果有更复杂的情况可以再慢慢改进。
#include
#include
#include
using namespace std;
const int TAB_SPACE = 4;
void outputJSon(istream &in, int indentLevel) {
bool firstChar = true;
bool inBracket = false;
while (in) {
char c = in.get();
if (firstChar) {
cout << endl << setw(indentLevel) << c;
firstChar = false;
}
else {
cout << c;
}
if (c == '{') {
outputJSon(in... 阅读全帖 |
|
i**********e 发帖数: 1145 | 4 其实不递归 代码或许会更简单些
void outputJSon(istream &in) {
bool newLine = false;
bool inBracket = false;
int indentLevel = 0;
while (in) {
char c = in.get();
if (newLine) {
cout << endl << setw(indentLevel) << c;
newLine = false;
}
else {
cout << c;
}
if (c == '{') {
indentLevel += TAB_SPACE;
newLine = true;
} else if (!inBracket && c == ',') {
newLine = true;
} else if (c == '}') {
newLine = true;
} else if (c == '[') {
... 阅读全帖 |
|
i**********e 发帖数: 1145 | 5 这是用矩阵来储存,利用 spiral 的形式填满矩阵,最后再一行一行打印。
感觉面试时利用这方法比较直观,不容易出错。
#include
#include
using namespace std;
const int N_MAX = 100;
void fill(int row, int col, int dx, int dy, int startVal, int numToFill, int
mat[][N_MAX]) {
int currVal = startVal;
int endVal = startVal + numToFill - 1;
for (int r = row, c = col; currVal <= endVal; r += dy, c += dx) {
mat[r][c] = currVal;
currVal++;
}
}
void generateMatrix(int n, int mat[][N_MAX]) {
if (n <= 0) return;
int row = ... 阅读全帖 |
|
c******t 发帖数: 1500 | 6 I wrote this last night. Any comment is welcome!
#include
#include
using namespace std;
const int N_MAX = 100;
void fill_in(int row, int size, int start_val, int** mat)
{
int start_col = row;
if (size == 1)
{
mat[row][start_col] = start_val;
return;
}
// top left to top right.
int size_of_square = (size - row * 2);
for (int i = start_col; i < row + size_of_square; ++i)
{
mat[row][i] = start_val;
++start_val;
... 阅读全帖 |
|
t******r 发帖数: 209 | 7 我贴个非递归的解法
// 从外向内螺旋打印1-n
void SpiralPrint(int n){
// 计算二维数组的维数k
int k = ceil(sqrt((float)n));
// 动态分配二维数组
int **a = new int*[k];
for(int m = 0; m < k; m++){
a[m] = new int[k];
}
// 初始化数组元素值为-1
for(int x = 0; x < k; ++x){
for(int y = 0; y < k; ++y) {
a[x][y] = -1;
}
}
// 起始数字
int num = 1;
int flag = 1;
// 起始位置
int i = 0;
int j = 0 ;
// 填数
while(true){
// 所有数都填完了么?
... 阅读全帖 |
|
y********a 发帖数: 18 | 8 #include
#include
#include
#include
using namespace std;
template
void printvec( vector vec ) {
cout << "begin--------------------" << endl;
for ( vector::const_iterator it = vec.begin(); it != vec.end();
it++ ) {
cout << setw(10) << *it << endl;
}
cout << "----------------------end" << endl;
}
int main() {
vector vec1;
for ( int ii = 0; ii < 10; ii++ ) {
vec1.push_back( ii );
... 阅读全帖 |
|
x****t 发帖数: 389 | 9 请问大家是继续沿用C的printf吗?
感觉cout< |
|
w***g 发帖数: 5958 | 10 这个页面上这些我都知道,Google和C++手册我也查过,但都不解决问题。下面是我的测
试程序。我希望的输出是
1. Hello, world!
但是事实上我得到的是
1.000000 Hello, world!
setprecision在这儿没用,因为如果我用setprecision(1),则打印3.14的时候就会精
度不够。我需要产生一个MPS输入文件,所以才需要用到这么变态的格式。其实多加几
个0没什么区别,只是C++的格式化I/O不能做到某些事情让我很不爽。
#include
#include
using namespace std;
int main ()
{
cout << left << fixed << showpoint << setw(12);
cout << 1.0 << "Hello, world!" << endl;
return 0;
} |
|
t****t 发帖数: 6806 | 11 来自主题: Programming版 - 编程题一道 花10分钟做一下好了, 因为我google到的也都是二维数组.
#include
#include
#include
#include
#include
using namespace std;
int calc(int y, int x, int sz)
{
y=y-sz; x=x-sz;
int level = max(abs(y), abs(x));
if (level==0) return 1;
int levelend = (level*2+1)*(level*2+1);
/* which side? */
if (y==-level) {
/* top */
return levelend+x-level;
}
levelend-=2*level;
if (x==-... 阅读全帖 |
|
i**********e 发帖数: 1145 | 12 来自主题: Programming版 - 编程题一道 Thanks LZ for sharing this interesting question.
Nice solution!
I agree with thrust that there's no need to store a 2d-array, but I think it
doesn't hurt to ask the interviewer which approach he/she wants.
Basically, you need to make an observation that the grid can be divided into
four areas: upper, lower, left, and right.
The equation for the number in the grid's corner is easy to derived.
Then, you can obtain the actual number by adding the difference either in x
or y coordinate relative to t... 阅读全帖 |
|
t****t 发帖数: 6806 | 13 no, most ppl don't need that. just know istream and ostream and their
variations is enough (istream is basic_istream, similar for ostream).
their variations include ifstream/ofstream, istringstream/ostringstream.
just know op<< for output, op>> for input, op! (usually you need that
instead of eof() member) to check eof, clear() for opening another file,
manipulators (such as setw(), endl, hex, etc.) for formating, and getline()
for reading a whole line. these are enough for 90% of ppl deal... 阅读全帖 |
|
w*s 发帖数: 7227 | 14 the code is like this,
std::stringstream ss;
unsigned char *pBuf;
ss << hex << int(pBuf[i]);
cout << ss.str();
say i have 3 chars, 14, 0, 54.
i got this 14054 instead of 140054,
how to make it print 140054 ?
tried setw(2), didn't work. |
|
t****t 发帖数: 6806 | 15 setfill('0')
and setw() has to be used before each data. |
|
j***h 发帖数: 4412 | 16 http://www.okok.org/cgi-bin/english/topic_print.cgi?id=33186
Topic: 我的工资该拿多少?
我的工资该拿多少?
Posted by: sunshine
Posted on: 2003-07-18 21:16
我在北京工作,参加工作五年了,从事钢结构设计有三个年头。对门式刚架轻钢厂房很
熟悉(有无吊车都可),也做过普钢厂房(50T吊车)。能熟练使用STAADPRO、SSDD、
STS、PKPM、TAT、SETWE等软件。
民用钢结构做过7层的钢结构住宅(地下一层,地上六层。其中地下一层带人防)。
混凝土方面能熟练设计框架结构、剪力墙结构的多高层。
我现在的年薪是5万,我感觉我的工资底了点。请各位大虾给予指点,我的工资多少比
较合适?
回复: 我的工资该拿多少?
Posted by: dy0098
Posted on: 2003-07-19 07:18
在北京工作,能熟练从事结构设计,年薪可达到8~10万
回复: 我的工资该拿多少?
Posted by: 字钧
Posted on: 2003-07- |
|
j***h 发帖数: 4412 | 17 发信人: jeffh (Jeffh), 信区: CivilEngineering
标 题: Re: 非常时期要攒人品,慎跳槽
发信站: BBS 未名空间站 (Thu Jun 4 12:19:22 2009, 美东)
http://www.okok.org/cgi-bin/english/topic_print.cgi?id=33186
Topic: 我的工资该拿多少?
我的工资该拿多少?
Posted by: sunshine
Posted on: 2003-07-18 21:16
我在北京工作,参加工作五年了,从事钢结构设计有三个年头。对门式刚架轻钢厂房很
熟悉(有无吊车都可),也做过普钢厂房(50T吊车)。能熟练使用STAADPRO、SSDD、
STS、PKPM、TAT、SETWE等软件。
民用钢结构做过7层的钢结构住宅(地下一层,地上六层。其中地下一层带人防)。
混凝土方面能熟练设计框架结构、剪力墙结构的多高层。
我现在的年薪是5万,我感觉我的工资底了点。请各位大虾给予指点,我的工资多少比
较合适?
回复: 我的工资该拿多少?
Posted by: dy0... 阅读全帖 |
|