当前位置: 首页 > 知识库问答 >
问题:

找出阵列中所有的混乱

海嘉赐
2023-03-14

这是一个程序,试图找出数组的所有混乱{10,11,12,13}

但它不起作用,因为当涉及到depth==0,i==0Peano[]={0,1,2,3}时,for循环没有结束,然后i递减为-1。到底怎么回事?

      #include<stdio.h>
        #include<stdlib.h>
        unsigned long long derange(int *array, int LEN, _Bool display, int *Peano, unsigned depth);
        int main(void){
        int i ,LEN=4, *Peano=malloc(sizeof(int));
        int array[4]={10,11,12,13};
        for(i=0; i<LEN; i++)Peano[i]=i;
        derange(array, LEN, 1, Peano, 0);
        printf("this derangement of the array total of %llu.\n", derange(array, LEN, 0, Peano, 0));
        return 0;}

            unsigned long long derange(int *array, int LEN, _Bool display, int *Peano, unsigned depth){
                    int i, temp;
                    unsigned long long count=0;
                    if(depth==LEN){
                            if(display){
                                    for(i=0; i<LEN; i++)
                                            fprintf(stdout, "%d\040", array[i]);
                                    putchar('\n');}
                            return 1;}
                    for(i=LEN-1; i>=depth; i--){
                            if(i==Peano[depth])continue;
                            temp=Peano[i]; Peano[i]=Peano[depth]; Peano[depth]=temp;
                            temp=array[i]; array[i]=array[depth]; array[depth]=temp;
                            count += derange(array, LEN, display, Peano, depth+1);
                            temp=Peano[i]; Peano[i]=Peano[depth]; Peano[depth]=temp;
                            temp=array[i]; array[i]=array[depth]; array[depth]=temp;}
                    return count;}

共有1个答案

邢起运
2023-03-14

在这里:

int i ,LEN=4, *Peano=malloc(sizeof(int));

将单个整数的空间分配给PeanoPeano是与数组并列的索引数组,长度为4。只需将其创建为堆栈上的自动变量:

int Peano[4];

derange中循环还有一个问题:

for (i = LEN - 1; i >= depth; i--) ...

这是一个循环,tat向下计数有符号的inti。但是,变量深度无符号的。这意味着在比较中

您可以通过将深度设置为int,而不是无符号,或者使用适用于有符号和无符号类型的向下循环变量来解决这个问题:

for (i = LEN; i-- > depth; ) ...

或者如果你不喜欢空的更新条款

i = LEN;
while (i-- > depth) ...
 类似资料:
  • 我有一个由6列组成的数据框。生成矩阵的最快方法是什么,该矩阵具有以下功能: 步骤1)col1*col1a, col2*col2a, col3*col3a, col4*col4a 步骤2)col_new=(col1*col1a)-col2*col2a)/(col1a-col2a) 使用for循环是选择之一——但是有什么方法可以更快地实现这一点。 我需要有1x3,1x4,1x5,2x3,2x4等等的列

  • 问题内容: 有没有一种方法可以获取实例中所有数据库中所有存储过程中引用的所有列和表?输出应为: 问题答案: 这将得到您想要的列表,但是,如果您在动态SQL中嵌入了此类列引用(并且可能找不到依赖于延迟名称解析的引用),则将无济于事。SQL Server不会解析存储过程的文本以提供DMV输出。 现在尝试使用子句来处理在同一服务器上具有不同归类的数据库的情况。 如果您的数据库处于80兼容模式,那么该语法

  • 文件输入。txt由两行组成:第一行是整数N空格,然后是整数K(1 ≤ N、 K级≤ 250000). Second有N个空间除数的整数,其中每个整数都小于或等于K。保证从1到K的每个整数都在数组中。任务是找到包含所有整数的最小长度的子数组。并打印其开始和结束。请注意,索引从1开始。 示例: 我在最近的一次编程比赛中完成了这个任务。一切都结束了,我没有作弊。我已经使用python 3实现了它: 这个

  • 我不知道该如何解决这个问题。我得到了一个有12个节点A-L的图。17个边缘连接它们。我被告知要找到从A到L的所有路径。我可以遍历一个节点多次,但只能遍历一次边。输出应该打印每个路径和路径总数。 例如,如果只有1个路径。输出应为: 我想一个递归的深度优先搜索函数应该可以解决这个问题,但我就是想不出一个打印每一条路径的方法。例如,如果我的函数找到一个路径ABDL并到达结尾L,它将打印ABDL。然后它回

  • 我看到一个问题,要求它找到所有相邻子阵列的最小值。例如,对于数组A=[1,2,3],答案将是一个包含[1,2,3,1,2,1]的数组B<怎么做- 我所做的是,构建了一个段树,但是它不包含所有连续子数组的最小值。 我也不认为我可以使用“脱钩”,因为我不必在特定长度的子数组中找到最小值。 那么,我如何获得所有连续子阵列(B阵列)的最小值?

  • 问题内容: 在PostgreSQL的information_schema中列出所有表的最佳方法是什么? 需要说明的是:我正在使用一个空的数据库(我没有添加任何自己的表),但是我想查看information_schema结构中的每个表。 问题答案: 您应该能够运行以获取由Postgres管理的特定数据库的每个表的列表。 您还可以添加一个以仅查看信息模式中的表。