小编das*_*ght的帖子

为什么在使用弱者时使用无主?

在Swift中,可以选择使用unownedweak.为何unowned可以使用weak?似乎两者几乎相同,weak更安全.

swift

3
推荐指数
1
解决办法
999
查看次数

在Swift中打印字典值

我正试图让我的字典在Swift中打印出来.如果我的字典是

var airports = ["ALB":"Albany International", "ORD": "O'Hare"]
Run Code Online (Sandbox Code Playgroud)

我打印出来说

airports["ALB"]
Run Code Online (Sandbox Code Playgroud)

它回来了

{Some "Albany International"}
Run Code Online (Sandbox Code Playgroud)

我注意到每当我有一个可选变量时也会发生这种情况.

有没有办法阻止它包括那些?

printing dictionary swift

3
推荐指数
1
解决办法
5678
查看次数

分组符号最大长度平衡子序列

将B视为一组分组符号(,),[,],{和}.如果B的长度为0或者B具有以下形式之一,则称为平衡序列:{X} Y或[X] Y或{X} Y其中X和Y本身是平衡的.Balanced的示例:() - {[]()} [] - ...

现在的问题是找到一种有效的算法来找到给定输入的最大长度平衡子序列(不一定是连续的),该输入是这些分组符号的串.

例如,如果输入是(){([)] {(])}} [],则其中一个最大长度子序列是(){[] {()}} []

我几乎可以肯定解决方案是DP,但无论如何我解决它我发现我的算法不起作用的例子.我确信只有一种方法,即DP和Divide and Conquer的组合.但它并不高效,因为无论如何D&C部分将一遍又一遍地解决一些重叠的问题.

algorithm optimization dynamic-programming divide-and-conquer

3
推荐指数
1
解决办法
682
查看次数

C整数关闭,可能溢出

我正在尝试制作一个C程序,用于计算和打印用户输入的制表符,空格和行数.问题在于,当它打印出这些数字时,它们就会大放异彩.这是我的程序代码:

int c, b, t, nl;
b, t, nl = 0, 0, 0;
while ((c = getchar()) != EOF) 
{
    if (c == '\b') 
        b++;
    if (c == '\t') 
        t++;
    if (c == '\n') 
        nl++;
}
printf("b=%d t=%d nl=%d\n", b, t, nl);
Run Code Online (Sandbox Code Playgroud)

当我从终端输入一些数据时(3行,一个空格,一个标签),结果是b = 1899313536,t = 32768,并且nl = 3.

c integer integer-overflow

3
推荐指数
1
解决办法
109
查看次数

反向打印整数数组

这是以相反顺序打印整数数组的相当简单的问题.虽然每当我尝试打印时,它最终都会显示垃圾值.以下是我的计划.

#include <stdio.h>
#include <conio.h>
int main()
{
    int temp = { '\0' };
    int num[9];
    int i;
    int j = 8;

    printf("Enter 8 numbers\n");
    for (i = 0; i < 8; i++)
    {
        scanf_s("%d", &num[i], 1);
    }
    for (i = 0; i <= j; i++, j--)
    {
        temp = num[i];
        num[i] = num[j];
        num[j] = temp;  
    }
    printf("\nThe numbers in reverse are\n");
    for (i = 0; i <=8; i++)
    {
        printf("%d\n", num[i]);
    }
    _getch(); 
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

假设我输入的数字从1到8,它会反向打印数字,但它打印的第一个值是垃圾值.我知道我可以使用和If语句来对抗这种情况,但有没有办法在不使用if的情况下解决这个问题?

c arrays

3
推荐指数
1
解决办法
6353
查看次数

用整数编译字符串常量的时间替换

我有一个预定义的字符串常量映射列表到我的代码库之外的数字.整数映射到程序内部的数据,但我想在代码中使用更易读的字符串常量.生成的二进制文件应仅包含数字,并且根本不包含字符串常量.是否可以在编译时用映射的整数替换字符串常量?

我想要实现的基本上是这个代码:

getData("a string constant here");
Run Code Online (Sandbox Code Playgroud)

我想把它变成这个:

getData(277562452);
Run Code Online (Sandbox Code Playgroud)

这可能通过宏或constexpr?

c++ c++11

3
推荐指数
1
解决办法
725
查看次数

for循环中的迭代变量什么时候递增

我目前正在阅读 Albahari 的 O'Reily 书《C# in a Nutshell》 ,并且正在阅读 Linq Query 章节。他正在描述进行 Linq 查询时延迟执行和变量捕获的效果。他举了一个常见错误的例子:

IEnumerable<char> query = "Not what you might expect";
string vowels = "aeiou";
for (int i = 0; i < vowels.Length; i++)
{
    query = query.Where(c => c != vowels[i]);
}
foreach (var c in query)
{
    Console.WriteLine(c);
}
Console.Read();
Run Code Online (Sandbox Code Playgroud)

一旦枚举查询就会抛出An IndexOutOfRangeException,但这对我来说没有任何意义。由于延迟执行和变量捕获的影响,我预计Where运算符中的lambda表达式c => c!= vowles[i]将简单地计算整个序列的at 。c => c != vowels[4]我继续调试,看看i抛出异常时的值是什么,发现它的值是 5?所以我继续将 for 循环中的条件子句更改为 ,i < vowels.Length-1;并且确实没有引发异常。for 循环是 …

c# linq

3
推荐指数
1
解决办法
3543
查看次数

为什么LINQ的First()需要显式强制转换,而foreach却不需要?

有人可以解释一下这段代码如何工作吗?

Action a = action;

Delegate[] alist = a.GetInvocationList();

// conversion between System.Delagate and System.Action is done
foreach(Action ac in alist) {
}

// cannot convert from System.Delagate to System.Action
Delegate firstDelegate = alist.First();
Action firstAction = firstDelegate; // compile error needs explicit cast
Run Code Online (Sandbox Code Playgroud)

但是...但是,如果需要的话,它将如何在foreach语句中将Delegate转换为Action呢?
是foreach在幕后使用显式强制转换吗?

c#

3
推荐指数
1
解决办法
109
查看次数

我收到从 int 到 boolean 类型不匹配的错误

代码是使用最后一位是 1 或 0 来检查一个数字是偶数还是奇数。如果最后一位是 1,它将进入 if 并打印odd

import java.util.Scanner;

public class Even_or_odd {
    public void Check_even_or_odd(int a) {
        if(a&1)//error:Type mismatch: cannot convert from int to boolean
            System.out.println("odd");
        else
            System.out.println("even");
   }
   public static void main(String[] args) {
        System.out.println("enter a number to check even or odd");
        Scanner scan=new Scanner(System.in);
        int a=scan.nextInt();
        scan.close();
        Even_or_odd e=new Even_or_odd();
        e.Check_even_or_odd(a);
    }
}
Run Code Online (Sandbox Code Playgroud)

java operators

3
推荐指数
1
解决办法
1035
查看次数

这两个LINQ查询有什么区别?

我有2个LINQ查询,一个返回我期望的,另一个没有,我试图理解为什么.我试图找出是否从Config中的所有节点,是否有一个名为"TEST"的节点,其Selected属性为True.

查询1 - 返回正确的东西的条件是Any():

var res1 =
(from config in _config.CurrentSettings.Config let name = config.name select config).Any(
    config => config.name.Equals("TEST") && config.selected == true);
Run Code Online (Sandbox Code Playgroud)

失败的查询2具有Select中的条件:

(_config.CurrentSettings.Config.Select(config => config.name.Equals("TEST") && config.selected))
.Any();
Run Code Online (Sandbox Code Playgroud)

c# linq ienumerable

3
推荐指数
1
解决办法
80
查看次数