小编Vai*_*orn的帖子

float和double有什么区别?

我已经读过双精度和单精度之间的区别.然而,在大多数情况下,floatdouble,似乎可以用一个可以互换的,即或其他的似乎不影响使用效果.这是真的吗?浮动和双打什么时候可以互换?它们之间有什么区别?

c c++ floating-point precision

384
推荐指数
9
解决办法
95万
查看次数

测试一个数字是否是斐波那契

我知道如何制作Fibonacci数列表,但我不知道如何测试给定数字是否属于斐波纳契列表 - 记住的一种方法是生成fib列表.数字达到那个数字并查看它是否属于数组,但必须有另一种更简单,更快速的方法.

有任何想法吗 ?

c++ testing algorithm math fibonacci

71
推荐指数
9
解决办法
4万
查看次数

如何使用string.substr()函数?

我想制作一个程序,以字符串格式读取一些数字并输出如下:如果数字是12345,那么它应输出12 23 34 45.我尝试使用c ++字符串库中的substr()函数,但它给了我奇怪的结果 - 它输出1 23 345 45而不是预期的结果.为什么?

#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
int main(void)
{
    string a;
    cin >> a;
    string b;
    int c;

    for(int i=0;i<a.size()-1;++i)
    {
        b = a.substr(i,i+1);
        c = atoi(b.c_str());
        cout << c << " ";
    }
    cout << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ string substring

39
推荐指数
2
解决办法
16万
查看次数

除法结果始终为零

我得到了这个C代码.

#include <stdio.h>

int main(void)
{
        int n, d, i;
        double t=0, k;
        scanf("%d %d", &n, &d);
        t = (1/100) * d;
        k = n / 3;
        printf("%.2lf\t%.2lf\n", t, k);
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

我想知道为什么我的变量't'总是为零(在printf函数中)?

c double multiplication division integer-division

17
推荐指数
1
解决办法
2万
查看次数

查找与一组规则匹配的所有排列

我给了N个号码,并为他们应用关于他们的订单的M规则.规则以一对索引表示,每对(A,B)告诉索引A(第A个数字)的数字必须在第B个数字之后 - 它不必在他旁边.

Ex: N = 4
    1 2 3 4
    M = 2
    3 2
    3 1

Output: 1234, 4213, 4123, 2134, 2143, 2413, 1423 ...Maybe there are even more:) 
Run Code Online (Sandbox Code Playgroud)

该算法应该给我所有可用的排列不会破坏规则,例如3 - 必须始终在2之后和1之后.

我试过强制但它不起作用(虽然强力应该在这里工作,N在范围(1,8).)

有任何想法吗 ?

c++ algorithm brute-force

11
推荐指数
1
解决办法
393
查看次数

如何反转C中的按位AND(&)?

如何反转C中的按位AND(&)?

例如,我在C中有一个这样的操作:

((unsigned int)ptr & 0xff000000))
Run Code Online (Sandbox Code Playgroud)

结果是0xbf000000.我现在需要的是如何扭转上述情况,即ptr通过使用操作的结果来确定,当然0xff000000.

有没有简单的方法在C中实现这个?

c reverse bitwise-operators

11
推荐指数
3
解决办法
9276
查看次数

将所有二进制位转换为一个状态所需的最少步骤数

有一个M二进制数组,每个都处于状态'0'或'1'.您可以在更改数字状态时执行几个步骤,并且在每个步骤中您都可以更改N个连续数字的状态.给定数字M,N和带有成员的数组,您将要计算将所有二进制数转换为一个状态所需的最小步数 - 1或0.


如果M = 6且N = 3并且数组是1 0 0 1 0 0,那么解决方案将是2.解释:我们可以翻转它们以便它们分两步完成:我们从索引2翻转到4并且我们将数组转换为111000,然后将最后三(N)0转换为1.

c++ algorithm dynamic-programming

6
推荐指数
1
解决办法
2725
查看次数

找到丢失的数字

如果我们有一个包含所有数字的数组,最多N(N <10),找到所有缺失的数字的最佳方法是什么.例:

N = 5
1 5 3 2 3

Output: 1 5 4 2 3 
Run Code Online (Sandbox Code Playgroud)

在前面,数字4是缺失的,有2个3,所以我们用4替换了第一个,现在数组已经完成 - 所有数字都达到了5个.

有没有简单的算法可以做到这一点?

c++ algorithm

6
推荐指数
1
解决办法
744
查看次数

找出向量中出现最多的数字

我有一些数字存储在矢量中.我想找到矢量中出现最多的数字.

有没有这样做的简单/快速算法(STL或其他)?

c++ vector

6
推荐指数
2
解决办法
1万
查看次数

什么更快?

如果我们在c ++中有以下2个代码片段来执行相同的任务:

int a, b=somenumber;
while(b > 0)
{
a = b % 3;
b /= 3;
}
Run Code Online (Sandbox Code Playgroud)

要么

int b=somenumber;
while(b > 0)
{
int a=b%3;
b /= 3;
}
Run Code Online (Sandbox Code Playgroud)

我对计算机体系结构/ c ++设计了解不多,但我认为第一个代码更快,因为它在开始时声明了整数a并且只在while循环中使用它,而在第二个代码中,整数a是每次while循环重新开始时都被声明.有人可以帮我这个,我是正确的还是为什么?为什么?

c++

6
推荐指数
2
解决办法
539
查看次数