回 帖 发 新 帖 刷新版面

主题:这是个古老的填字游戏,一起玩玩吧!

3*3的方阵填入1-n(n>=10)内的9个数,使得所有相邻的两个数字之和为质数?求解法?

回复列表 (共3个回复)

沙发

#include <iostream>   
using namespace std;
bool  shusu(int a)
{
    int j,i=a; 
    if(i<2)  return false;
    for(j=2;j<=i/2;j++)   
    if(i%j==0) return false;   
    if(j>i/2)   return true;
}
void main(void)
{   
    int n;
    int a1,a2,a3,a4,a5,a6,a7,a8,a9,a0;
    cout<<"请输入范围n:";
    cin>>n;
    for(a1=2;a1<n;a1++)
        for(a2=2;a2<n;a2++)
            for(a3=2;a3<n;a3++)
                 for(a4=2;a4<n;a4++)
                     for(a5=2;a5<n;a5++)
                         for(a6=2;a6<n;a6++)
                             for(a7=2;a7<n;a7++)
                                 for(a8=2;a8<n;a8++)
                                     for(a9=2;a9<n;a9++)
                                    {
                                        if(shusu(a1+a2)) 
                                            if(shusu(a1+a4))
                                                if(shusu(a2+a3))
                                                    if(shusu(a2+a5))
                                                        if(shusu(a3+a6))
                                                            if(shusu(a4+a7))
                                                                if(shusu(a4+a5))
                                                                    if(shusu(a5+a8))
                                                                        if(shusu(a5+a6))
                                                                            if(shusu(a6+a9))
                                                                            {
                                                                                cout<<a1<<'\t'<<a2<<'\t'<<a3<<endl;
                                                                                cout<<a4<<'\t'<<a5<<'\t'<<a6<<endl;
                                                                                cout<<a7<<'\t'<<a8<<'\t'<<a9<<endl;
                                                                                cout<<endl<<endl<<endl<<endl;
                                                                                goto m;
                                                                            }
                                    }
m:    ;
}


我的代码不能完全做到你想要的  但是你可以参考参考 或许有帮助

板凳

楼上代码很要不得啊。。。

3 楼

先填写第一行和第一列,然后再按顺序填写,似乎这样思考量比较少

我来回复

您尚未登录,请登录后再回复。点此登录或注册