我是一年级的CSD学生,我有一个作业,我需要检查一个正方形是否是一个幻方,并打印“是”或“否”的每一行(包括对角线)和列,满足要求的总和幻方,如果它的每个数字是唯一的,最后,如果它是魔术。例如,它应该像这样:Input of the size of the square + the numbers we put in it-the required output我的问题是我的算法适用于从数字(正方形的大小)1到9的测试。然后测试输入到37+。对于框的大小是37+的测试,每行和每列的总和没有正确相加。
第一个
这是我为上面解释的算法编写的代码,问题是求和。pin[][]是一个有平方输入的数组,pin 1 []是我从pin中生成的数组,用来检查它是否有唯一的数字。非常感谢你的帮助。(我没有包括main和etc,因为这个任务要求两个东西来检查一个平方是否是魔术,并使用参数来创建一个。我只包括了我为检查过程所做的工作。MAXN定义为100
1条答案
按热度按时间inb24sb21#
几个问题...
1.一开始我以为
sum
等溢出了一个int
[需要是long long
],但事实并非如此pin
数组[可能]太大,无法放入堆栈--需要全局范围。pin1
数组是int pin1[MAXN];
,但通过(例如)pin1[i * N + j]
访问,因此它需要是pin1[MAXN * MAXN];
。并且,还应该是全局范围。存在间歇性段故障,因此转到全局范围可以修复这些故障。
因为我需要在
gdb
下运行程序,所以我侵入了一个fopen
调用,并将scanf
更改为fscanf
。在上面的代码中,我使用了
cpp
条件语句来表示旧代码和新代码:注意:通过
unifdef -k
运行文件可以清除此问题下面是您发布的“big”输入的程序输出: