首页 > 其他 > 详细

9宫格填数字

时间:2015-04-19 19:06:44      阅读:326      评论:0      收藏:0      [点我收藏+]

 

题目大意:

      给你一个九宫格,每个格子只能填1--9这九个数字并且不能重复,题目给你每一行每一列三个数字之和,问一共有多少种可行的方法?

解题思路:

      其实就是一道简单的搜索题,用一个k标记选取数的个数,具体见代码:

AC代码:

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
#include<string.h>
#include<math.h>
using namespace std;
int sum,a1,b,c,d,e,f,g;
int a[10];
int judge()
{
    if((a[0]+a[1]+a[2])==a1&&(a[3]+a[4]+a[5])==b&&(a[6]+a[7]+a[8])==c&&(a[0]+a[3]+a[6])==d&&(a[1]+a[4]+a[7])==e&&(a[2]+a[5]+a[8])==f)
      return 1;
    else return 0;
}
void dfs(int a[],int k)
{
    int i,t;
    if(k>=9)
    {
        if(judge()) sum++;
    }
    for(i=k;i<9;i++)
    {
        t=a[k];a[k]=a[i];a[i]=t;
        dfs(a,k+1);
        t=a[k];a[k]=a[i];a[i]=t;
    }
}
int main()
{
    while(scanf("%d%d%d%d%d%d",&a1,&b,&c,&d,&e,&f)!=EOF)
    {
        for(int i=1;i<=9;i++)
        {
            a[i-1]=i;
        }
        sum=0;
        dfs(a,0);
        printf("%d\n",sum);
    }
    return 0;
}

 

9宫格填数字

原文:http://www.cnblogs.com/gaojupeng/p/4439508.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!