蓝桥杯 方格填数

来源:互联网 发布:学电脑锣编程要多久 编辑:程序博客网 时间:2024/04/30 15:54
在2行5列的格子中填入1到10的数字。
要求:

相邻的格子中的数,右边的大于左边的,下边的大于上边的。

例子如图所示


#include<stdio.h>#include<math.h>#include<string.h>#include<stdlib.h>#define ll long longint map[2][5];int vis[20];int cnt;void check(){    int i,j;    for (i=0;i<5;i++)      if (map[0][i]>map[1][i])        return;      for (i=1;i<5;i++)        if ((map[0][i-1]>map[0][i])||(map[1][i-1]>map[1][i]))            return;            for (i=0;i<2;i++)                for (j=0;j<5;j++)                printf("%d ",map[i][j]);            printf("\n");            cnt++;}void dfs(int cur){    int i;    if (cur==10)        check();        for (i=0;i<10;i++)            if (!vis[i])        {            vis[i]=1;            map[cur/5][cur%5]=i+1;            dfs(cur+1);            vis[i]=0;        }}int main(){    memset(vis,0,sizeof(vis));    dfs(0);    printf("%d\n",cnt);    return 0;}


0 0
原创粉丝点击