皇后排序代码设计完后执行显示段错误(吐核)
今天在做快速排序课后作业第一题皇后排序,我知道是有课后答案,但我不想照着抄一遍完事儿。我自己设计的代码在语法检验无误后无法执行,麻烦大佬能帮忙看看问题在起哪儿我的设计思路如下;
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;
} number = 0 ? 傻眼貓咪 发表于 2022-7-3 12:58
number = 0 ?
试了,没效果,它还是那么仍性 山小 发表于 2022-7-4 07:49
试了,没效果,它还是那么仍性
太任性了 {:10_277:}
你的思路中,第 4 点:对完整的皇后数组进行排序,是如何排序呢?毕竟这会影响每一行、每一列。
页:
[1]