小编bil*_*llz的帖子

将列表转换为所需数组的最小步骤算法.(仅使用InsertAt和DeleteAt)

情况

首先,你有一个数组/列表A,然后你想将它转换为给定的预期数组/列表B. 您可以应用在阵列的唯一行动是InsertAtDeleteAt他们在哪里能够插入,并从列表中的某些索引中删除的元素.

注意:阵列B始终排序,而阵列A可能不排序.

例如,你有一个数组A. [1, 4, 3, 6, 7]

而你希望它成为 [2, 3, 4, 5, 6, 6, 7, 8]

一种方法是让A接受以下行动:

    deleteAt(0); // which will delete element 1, arrayA now [4, 3, 6, 7]
    deleteAt(0); // delete element 4 which now at index 0
                 // array A now [3, 6, 7]
    insertAt(0, 2); // Insert value to at index 0 of array A
                    // array A now [2, 3, 6, 7]
    insertAt(2, 4); // array now [2, …
Run Code Online (Sandbox Code Playgroud)

c arrays algorithm list

5
推荐指数
1
解决办法
331
查看次数

用C分解单词

我正在学习C,我遇到了一个奇怪的问题.

我正在尝试编写一个程序,它能够输入一个句子并将它们作为单独的单词输出.

INPUT:   a bb  ccc   dddd    eeeee

DESIRED  a
OUTPUT:  bb
         ccc
         dddd
         eeeee
Run Code Online (Sandbox Code Playgroud)

当我编写以下代码时,这很有效.但是,当我将部分代码更改为我认为应该以相同方式工作时,它的工作异常.

原始代码:

#include <stdio.h>
#define NONBLOCK 'c'
/* separate words */
main()
{
    int c ,lastc;
    int toggle;

    lastc = NONBLOCK;

    while ((c = getchar()) != EOF){
        if (c == ' '){
            if (lastc != ' ')
                putchar('\n');
        }
        else{
            putchar(c);
        }
        lastc = c;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我替换以下时它错误地工作:

        if (c == ' '){
            if (lastc != ' ')
                putchar('\n');
        }
Run Code Online (Sandbox Code Playgroud)

        if (c == ' …
Run Code Online (Sandbox Code Playgroud)

c

0
推荐指数
1
解决办法
70
查看次数

标签 统计

c ×2

algorithm ×1

arrays ×1

list ×1