当代码流是这样的:
if(check())
{
...
...
if(check())
{
...
...
if(check())
{
...
...
}
}
}
Run Code Online (Sandbox Code Playgroud)
我一般都看到这个工作,以避免上面的凌乱的代码流:
do {
if(!check()) break;
...
...
if(!check()) break;
...
...
if(!check()) break;
...
...
} while(0);
Run Code Online (Sandbox Code Playgroud)
有哪些更好的方法可以避免这种解决方案/黑客攻击,从而使其成为更高级别(行业级别)的代码?
任何开箱即用的建议都是受欢迎的!
此代码打印印度地图.它是如何工作的?
#include <stdio.h>
main()
{
int a,b,c;
int count = 1;
for (b=c=10;a="- FIGURE?, UMKC,XYZHello Folks,\
TFy!QJu ROo TNn(ROo)SLq SLq ULo+\
UHs UJq TNn*RPn/QPbEWS_JSWQAIJO^\
NBELPeHBFHT}TnALVlBLOFAkHFOuFETp\
HCStHAUFAgcEAelclcn^r^r\\tZvYxXy\
T|S~Pn SPm SOn TNn ULo0ULo#ULo-W\
Hq!WFs XDt!" [b+++21]; )
for(; a-- > 64 ; )
putchar ( ++c=='Z' ? c = c/ 9:33^b&1);
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我最近读完了第一卷.Bruce Eckel在C++中的思考,现在转向将这些知识用于实际应用.
我最近使用静态成员函数并尝试使构造函数静态,编译器对此不满意.我检查了书中的原因但找不到任何原因.
有谁能解释为什么?
PS:在看到一些回复之后,我想提一下,由于我知道C#(和Java)允许构造函数被声明为静态,因此产生了混淆.
有一个岛由方阵nxn表示.
岛上的人站在任何给定的坐标(x,y).他可以在岛上向右,向左,向上,向下一步向任何方向移动.如果他走出岛外,他就死了.
将岛表示为(0,0)到(n-1,n-1)(即nxn矩阵)并且人站在给定的坐标(x,y)处.他被允许在岛上移动n步(沿着矩阵).他在岛上走了几步后死亡的可能性是多少?
使用编程技术找到概率的方法应该是什么?
我有一个数学方法,但我不知道它是否正确.这里是:
结果总数为n ^ n.计算可能导致死亡的结果数量:
对于四个方向中的每个方向,检查可以导致他走出矩阵的步数.然后,应用高中概率公式.例如,假设他可以采取的步骤总数为5; (x,y)=(2,1)[索引是基于0的].所以,他需要在北方队采取3个步骤.从岛上掉下来.将它们保持在一组:(NNN)并将其他两个步骤作为4个选项中的任何一个,我们有公式:4*4*3.同样,对于其他3个方向.最后,概率=(计算的死亡结果的总和)/(总结果)
这是一个谷歌面试问题.
我已经看到了代码,其中构造函数已被声明为私有,而析构函数是公共的.这种声明有什么用?析构函数是否需要公开,以便在继承期间调用是可能的,还是代码中的错误?
这个问题在信息上似乎有点短,但我真正想知道的是,当构造函数需要私有时遵守C++规则是否有公共析构函数?
以下是Facebook招聘样本测试的问题.
有K钉.当从挂钉的底部到顶部观察时,每个挂钉可以以半径的递减顺序保持圆盘.有N个半径为1到N的圆盘; 给定栓钉的初始配置和栓钉的最终配置,输出从初始配置转换为最终配置所需的移动.您需要以最少的移动次数进行转换.
移动包括挑选任何一个钉子的最顶部圆盘并将其放置在任何其他钉子的顶部.在任何时候,必须保持所有栓钉的半径减小性能.
约束:
1 <= N <= 8
3 <= K <= 5
输入格式:
NK
第二行包含N个整数.每个整数在1到K的范围内,其中第i个整数表示在初始配置中存在半径为i的盘的栓.
第3行表示与初始配置类似的格式的最终配置.
输出格式:
第一行包含M - 完成转换所需的最小移动次数.
以下M行描述了一个移动,通过一个挂钩编号来挑选,一个挂钩编号放在上面.如果有多个解决方案,则输出其中任何一个就足够了.您可以假设,始终存在少于7次移动的解决方案,并且初始确认将与最终确认不同.
示例输入#00:
2 3
1 1
2 2
样本输出#00:
3
1 3
1 2
3 2
示例输入#01:
6 4
4 2 4 3 1 1
1 1 1 1 1 1
样本输出#01:
五
3 1
4 3
4 1
2 1
3 1
讨论此问题的解决方案没有任何害处,因为它是一个示例问题.
经典的河内塔问题的解决方案非常简单:
void hanoi(char s, char i, char d, int n)
{
if(n>0)
{ …Run Code Online (Sandbox Code Playgroud) 大家好!我正在尝试学习C语言并遇到麻烦:
书中的示例代码可以正常工作:
#include <stdio.h>
/* ?????? ??????? ?????????? ?? ??????????
? ??????? ??? fahr = 0, 20, ..., 300 */
main()
{
int fahr, celsius;
int lower, upper, step;
lower = 0; /* ?????? ??????? ??????? ?????????? */
upper = 300; /* ??????? ??????? */
step = 20; /* ??? */
fahr = lower;
while (fahr <= upper) {
celsius = 5 * (fahr-32) / 9;
printf("%d\t%d\n", fahr, celsius);
fahr = fahr + step;
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
0 -17
20 …
我想过使用protected constructor,但它不能完全解决目的,因为从它继承的类将能够实例化基类。
至于私有构造函数,派生类也不会被实例化。
因此,任何合适的技术将不胜感激。
我试图通过模板在C++中实现HashTable.这是签名:
template<class T1, class T2>
class HashTable {
public:
void add(T1 a, T2 b);
void hashFunction(T1 key, T2 value)
{
// how to implement this function using key as a generic
// we need to know the object type of key
}
};
Run Code Online (Sandbox Code Playgroud)
因此,我无法推进涉及通用密钥的实现.
在Java中,我可以轻松地将键转换为字符串,然后很高兴将键的哈希实现为字符串.但是,在C++中,我所知道的是有一个RTTI概念可以动态地将对象转换为所需的对象.
如果这个方法是正确的,如何实现动态转换?
如果在这种情况下使用模板不是实现泛型的正确方法,那么请建议一些更好的方法.
我有一个困惑:
我在很多帖子中都读到Hash-map被实现为二进制搜索树,这使得各种操作时间复杂度成为对数顺序.
另一方面,哈希表提供恒定的时间提取.
但是,正如我在本文中所读到的那样,在两个数据结构中检索/搜索元素的复杂性方面没有提供任何差异.
所以,这是我的问题 -
由于散列表保证提供恒定的搜索时间复杂度,因此它们的实现必须与散列映射的实现不同.那么,如果有人不提供恒定时间搜索,为什么有人会使用哈希映射.另外,为什么首先将它们实现为二叉搜索树?
我知道哈希映射以排序的形式存储密钥,并通过映射提供迭代.但是,也可以在哈希表中提供相同的内容.
c++ ×6
algorithm ×3
c ×2
hashtable ×2
recursion ×2
constructor ×1
destructor ×1
do-while ×1
facebook ×1
gcc ×1
hashmap ×1
matrix ×1
obfuscation ×1
oop ×1
public ×1
pure-virtual ×1
static ×1
string ×1