藍橋杯 方格填數
阿新 • • 發佈:2019-02-17
在2行5列的格子中填入1到10的數字。
要求:
要求:
相鄰的格子中的數,右邊的大於左邊的,下邊的大於上邊的。
例子如圖所示
#include<stdio.h> #include<math.h> #include<string.h> #include<stdlib.h> #define ll long long int 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; }