首页
社区
课程
招聘
[原创]不死神鸟.cpp
发表于: 2010-10-20 15:23 3560

[原创]不死神鸟.cpp

2010-10-20 15:23
3560
#define shuzuA {16, 3, 2, 13, 5, 10, 11, 8, 9, 6, 7, 12, 4, 15, 14, 1}//预定义数组部分
#include <iostream>//定义头文件
int caseno = NULL;//csaeno为空的整数型变量
int shuzu[] = shuzuA;//将预定义的shuzuA赋给shuzu的数组成员
void fourset(int,int);//定义fourset为接收带有2个整数形参数的函数
int main()
{//main函数开始
        fourset(0, 16);//调用fourset函数,并传递2个参数0和16
        return 0;//返回0
}//main函数结束
void print()
{//print函数开始
        int j = 0;//定义2个整数型变量i和j,并把j的值初始化为0
        printf("Case %d\n-----------\n", ++caseno);//输出Case加上编号加\n换行符-----------加\n换行符
        for (int i = 0; i < 16; i++)//for语句循环条件为i为整数型,将i初始化为0,判断i的值是否小于16,如果小于则i进行自加操作
        {//for循环开始
                printf("%2d ", shuzu[i]);//输出shuzu[i]
                if (0 == (++j) % 4)//判断0是否等于j+1
                        printf("\n");//输出1个换行符
        }//for循环结束
        printf("\n");//输出1个换行符
}//print函数结束
int get()
{//get函数开始
        int a = shuzu[0] + shuzu[1] + shuzu[2] + shuzu[3];//初始化整数型变量a的值为shuzu[0] + shuzu[1] + shuzu[2] + shuzu[3]
        if (a != shuzu[4] + shuzu[5] + shuzu[6] + shuzu[7])//如果a不等于shuzu[4] + shuzu[5] + shuzu[6] + shuzu[7]
                return 0;//返回0
        if (a != shuzu[8] + shuzu[9] + shuzu[10] + shuzu[11])//如果a不等于shuzu[8] + shuzu[9] + shuzu[10] + shuzu[11]
                return 0;//返回0
        if (a != shuzu[12] + shuzu[13] + shuzu[14] + shuzu[15])//如果a不等于shuzu[12] + shuzu[13] + shuzu[14] + shuzu[15]
                return 0;//返回0
        if (a != shuzu[0] + shuzu[4] + shuzu[8] + shuzu[12])//如果a不等于shuzu[0] + shuzu[4] + shuzu[8] + shuzu[12]
                return 0;//返回0
        if (a != shuzu[1] + shuzu[5] + shuzu[9] + shuzu[13])//如果a不等于shuzu[1] + shuzu[5] + shuzu[9] + shuzu[13]
                return 0;//返回0
        if (a != shuzu[2] + shuzu[6] + shuzu[10] + shuzu[14])//如果a不等于shuzu[2] + shuzu[6] + shuzu[10] + shuzu[14]
                return 0;//返回0
        if (a != shuzu[3] + shuzu[7] + shuzu[11] + shuzu[15])//如果a不等于shuzu[3] + shuzu[7] + shuzu[11] + shuzu[15]
                return 0;//返回0
        if (a != shuzu[0] + shuzu[5] + shuzu[10] + shuzu[15])//如果a不等于shuzu[0] + shuzu[5] + shuzu[10] + shuzu[15]
                return 0;//返回0
        if (a != shuzu[3] + shuzu[6] + shuzu[9] + shuzu[12])//如果a不等于shuzu[3] + shuzu[6] + shuzu[9] + shuzu[12]
                return 0;//返回0
        else//否则
        {
                return 1;//返回1
        }       
}//get函数结束
void mobile(const int m)//函数名mobile带有1个整数型参数
{//mobile函数开始
        int i,j = shuzu[0];//定义i和j为整数型,初始化j的值为shuzu[0]
        for (i = 0; i < m; i++)//for循环的条件为i等于0,如果i小于m的值,则i进行自加
                shuzu[i] = shuzu[i + 1];//数组函数shuzu[i]的结果等于函数名shuzui的数组i加1的值
        shuzu[i] = j;//数组函数shuzu[i]的结果等于j
}//mobile函数结束
void fourset(const int m, const int n)//定义1个名为fourset的函数,该函数传递了2个整形常数
{//fourset函数开始

        if (m < n)//if判断语句 m是否小于n
        {//if判断开始
                for (int i = 0; i <= m; i++)//for循环的条件为i为整数型,并初始化i的值为0,i是否小于等于m,如果小于则i进行自加操作
                {//for循环开始
                        fourset(m + 1, n);//将m+1和n分别传递给fourset中的2个参数
                        mobile(m);//将m传递给函数mobile
                }//for循环结束
        }//if判断结束
        else//否则
        {
                if (get())//判断get函数是否为空
                        print();//输出
        }
}//fourset函数结束

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//