社区
数据结构与算法
帖子详情
求教(有没有人能做的出来的--最好能用多种方法)
CycloneFox
2003-10-10 11:27:13
9个数字从1~9分别放在3*3的格子里使横,竖,斜相加所得的数均等于同一个数.
用C++编写.
扩展为25,49,81个数.
那位大虾肯帮小弟这个忙呀?
...全文
49
6
打赏
收藏
求教(有没有人能做的出来的--最好能用多种方法)
9个数字从1~9分别放在3*3的格子里使横,竖,斜相加所得的数均等于同一个数. 用C++编写. 扩展为25,49,81个数. 那位大虾肯帮小弟这个忙呀?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
CycloneFox
2003-10-12
打赏
举报
回复
楼上的师兄,谢谢了。
CycloneFox
2003-10-11
打赏
举报
回复
谢谢了真是太好了.
哈哈.
BlueSky2008
2003-10-11
打赏
举报
回复
FAQ->组合数学算法->n阶幻方解法。
nealzane
2003-10-11
打赏
举报
回复
修正了小小的漏洞(不过也是洞啊 =_=b):
#include <iostream>
using namespace std;
bool used[12] = { false };
int board[4][4];
bool check(void) {
return (board[1][1] + board[2][1] + board[3][1] == 15 &&
board[1][2] + board[2][2] + board[3][2] == 15 &&
board[1][3] + board[2][3] + board[3][3] == 15 &&
board[1][1] + board[2][2] + board[3][3] == 15 &&
board[1][3] + board[2][2] + board[3][1] == 15);
}
void rowAt(int row) {
if (row == 0) {
if (check()) {
for (int i = 1; i <= 3; i ++, cout << endl)
for (int j = 1; j <= 3; j ++)
cout << board[i][j] << ' ';
cout << endl;
}
}
else {
for (int i = 1; i <= 9; i ++) {
if (!used[i]) {
used[i] = true;
board[row][1] = i;
for (int j = 1; j <= 9; j ++) {
if (!used[j]) {
used[j] = true;
board[row][2] = j;
int k = 15 - i - j;
if (k > 0 && k < 10 && !used[k]) {
used[k] = true;
board[row][3] = k;
rowAt(row - 1);
used[k] = false;
}
used[j] = false;
}
}
used[i] = false;
}
}
}
}
int main(void) {
rowAt(3);
}
------------------------------------------------------------
输出:
4 3 8
9 5 1
2 7 6
6 1 8
7 5 3
2 9 4
2 7 6
9 5 1
4 3 8
8 1 6
3 5 7
4 9 2
2 9 4
7 5 3
6 1 8
8 3 4
1 5 9
6 7 2
4 9 2
3 5 7
8 1 6
6 7 2
1 5 9
8 3 4
nealzane
2003-10-11
打赏
举报
回复
扔块砖头:
#include <iostream>
using namespace std;
bool used[12] = { false };
int board[4][4];
bool check(void) {
return (board[1][1] + board[2][1] + board[3][1] == 15 &&
board[1][2] + board[2][2] + board[3][2] == 15 &&
board[1][3] + board[2][3] + board[3][3] == 15 &&
board[1][1] + board[2][2] + board[3][3] == 15 &&
board[1][3] + board[2][2] + board[3][1] == 15);
}
void rowAt(int row) {
if (row == 0) {
if (check()) {
for (int i = 1; i <= 3; i ++, cout << endl)
for (int j = 1; j <= 3; j ++)
cout << board[i][j] << ' ';
cout << endl;
}
}
else {
for (int i = 1; i <= 9; i ++) {
if (!used[i]) {
used[i] = true;
board[row][1] = i;
for (int j = 1; j <= 9; j ++) {
if (!used[j]) {
used[j] = true;
board[row][2] = j;
int k = 15 - i - j;
if (k > 0 && !used[k]) {
used[k] = true;
board[row][3] = k;
rowAt(row - 1);
used[k] = false;
}
used[j] = false;
}
}
used[i] = false;
}
}
}
}
int main(void) {
rowAt(3);
}
------------------------------------------------------------
输出:
4 3 8
9 5 1
2 7 6
6 1 8
7 5 3
2 9 4
2 7 6
9 5 1
4 3 8
8 1 6
3 5 7
4 9 2
2 9 4
7 5 3
6 1 8
8 3 4
1 5 9
6 7 2
4 9 2
3 5 7
8 1 6
6 7 2
1 5 9
8 3 4
Kavent
2003-10-10
打赏
举报
回复
幻方问题嘛~
人教部编道德与法治三年级上册知识点.docx
3. 学习
方法
:每个人都有适合自己的学习方式,找到合适的
方法
能提高学习效率。主动提问、独立思考、合作学习、利用
多种
资源(书籍、网络、生活经验等)都是有效的学习策略。 二、
做
学习的主人 1. 面对困难:学习中...
春一年级语文下册 第七单元 提升练习 冀教版-冀教版小学一年级下册语文试题.doc
试题包含了
多种
类型的题目,旨在锻炼学生的拼音、汉字辨析、词汇运用、成语搭配、组词以及阅读理解等多方面的能力。 一、看拼音,写字词:这部分是考察学生对汉字拼音的理解和书写能力,要求学生根据拼音正确写出...
部编人教小学三年级语文上册口语交际请教PPT学习教案.pptx
在实际操作中,学生需要学习如何用温和、尊重的语言进行提问,以及如何在求助后表示感谢,即使问题最终没有得到解决。 此外,清晰地表达问题和感激之情也是本单元教学内容的重点。学生在请教问题时,应该学会如何将...
八年级语文下册23送东阳马生序重点理解苏教版
其次,文章向读者传递了
多种
学习的启示,如学习的动力源于兴趣,
求教
他人需谦虚诚恳,敢于发问,要有主动性,勤奋刻苦,以及以读书为乐,就能克服困难。这些启示强调了学习过程中积极态度的重要性,尤其是对待知识的...
新部编版三年级道德与法治上册月考考试题【带答案】.pdf
7. **个性与独特性**:“世界上没有两片完全相同的叶子”,这句话教导我们要认识到每个人都有其独特性,应该欣赏和尊重个体差异。 8. **学习态度**:“敏而好学,不耻下问”意味着聪明且热爱学习的人不以向他人
求教
...
数据结构与算法
33,028
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章