山小 发表于 2022-7-3 09:55:25

皇后排序代码设计完后执行显示段错误(吐核)

今天在做快速排序课后作业第一题皇后排序,我知道是有课后答案,但我不想照着抄一遍完事儿。我自己设计的代码在语法检验无误后无法执行,麻烦大佬能帮忙看看问题在起哪儿
我的设计思路如下;
1:建立一个8*8的数组,然后按1-64填充
2:用随机数选点,把选到的点置为0,然后将同一行同一列同一对角线的元素也置0;
3:然后在剩下非0的元素内选点,重复上述过程
4:找到一个完整的皇后数组后,对其中的元素进行排序(因为按1-64填充,排序完后进行对比防止重复)
5;创建一个用来存储得到的皇后排序的的大数组,将排序完后的数列存放进去
6;重复上述过程
7:打印

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int number;

void bubble_sort(int array1, int str, int a, int array);
void queen_sort(int array, int str, int row, int col);
void storage(int array1, int str, int array);
//用来存储找到的皇后排序
void storage(int array1, int str, int array)
{
        int i = 0, j = 0, k = 0;
        extern int number;

        for ( i = 0 ; i <= number ; i++ )
        {
                for ( j = 0 ; j < 8 ; j++ )
                {
                        if ( str == array1)
                        {
                                k++ ;
                                if ( k == 8)
                                {
                                        queen_sort(array, str, 8, 8);
                                }
                        }
                        else
                        {
                                break;
                        }
                }
        }

        for ( i = 0 ; i < 8 ; i++ )
        {
                str = array1;
        }

        queen_sort(array, str, 8, 8);
}
//排序
void bubble_sort(int array1, int str, int a, int array)
{
        int aver, i, j = 0, k = a - 1, sum = 0;
        for (i = 0 ; i < a ; i++ )
        {
                sum += array1;
        }
        aver = sum / a ;

        int str1;

        for ( i = 0 ; i < a ; i++ )
        {
                if(array1 <= aver)
                {
                        str1 = array1;
                }
                else
                {
                        str1 = array1;
                }
        }

        sum = a / 2 ;
        while (sum--)
        {
                for ( i = 0 ; i < a - 1 ; i++ )
                {
                        if(str1 <= str1)
                        {
                                ;
                        }
                        else
                        {
                                aver = str1;
                                str1 = str1;
                                str1 = aver ;

                        }
                }
        }

        for ( i = 0 ; i < a ; i++ )
        {
                array1 = str1;
        }

       storage(array1, str, array);
}

//找可能的排列方式
void queen_sort(int array, int str, int row, int col)
{
        int i, j, k = 1, num = 0 ;
        int array1 = {0};

        for ( i = 0 ; i < row ; i++ )
        {
                for ( j = 0 ; j < col ; j++ )
                {
                        array = k++ ;
                }
        }

        srand((unsigned)time(NULL)) ;

        while (array1 == 0)
        {
                i = rand() % 8;
                j = rand() % 8;
                if (array != 0)
                {
                        array1 = array;
                        for (k = 0 ; k < col ; k++ )
                        {
                                array = 0;
                                array = 0;
                                array[++i][++j] = 0;
                                array[--i][--j] = 0;
                                array[--i][++j] = 0;
                                array[++i][--j] = 0;
                        }
                }
        }

        bubble_sort(array1, str, 8, array);
}

int main(void)
{
        int array;
        int i, j;
        extern int number ;
        int str = {0};

        queen_sort(array, str, 8, 8);

        for ( i = 0 ; i <= number ; i++ )
        {
                for ( j = 0 ; j < 8 ; j++ )
                {
                        printf("%d ", str);
                }
                printf("\n");
        }

        return 0;
}

傻眼貓咪 发表于 2022-7-3 12:58:04

number = 0 ?

山小 发表于 2022-7-4 07:49:23

傻眼貓咪 发表于 2022-7-3 12:58
number = 0 ?

试了,没效果,它还是那么仍性

傻眼貓咪 发表于 2022-7-4 09:54:20

山小 发表于 2022-7-4 07:49
试了,没效果,它还是那么仍性

太任性了 {:10_277:}
你的思路中,第 4 点:对完整的皇后数组进行排序,是如何排序呢?毕竟这会影响每一行、每一列。
页: [1]
查看完整版本: 皇后排序代码设计完后执行显示段错误(吐核)