生活随笔
收集整理的這篇文章主要介紹了
益智游戏
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Description
李老師最近開發了一項關于訓練學生心算能力的益智游戲,游戲很簡單,就是隨機給定4個1到9之間的自然數,要求判斷能否對這4個自然數進行適當的算術運算,使運算結果等于24。
你可以使用的運算只有:+,-,,/,您還可以使用()來改變運算順序。注意:所有的中間結果須是整數,所以一些除法運算是不允許的(例如,(22)/4是合法的,2*(2/4)是不合法的)。下面我們給出一個游戲的具體例子:
若給出的4個自然數是:1、2、3、7,則一種可能的解答是1+2+37=24。計算過程:
2+1=3
73=21
21+3=24
不要求輸出具體計算過程,現在請你編寫實現這個游戲加強版的程序(所謂加強版,就是要對多組數據逐一進行判斷,具體輸入輸出及要求如下)。
Input
共有N+1行,第一行只有一個正整數N,表示要判斷數據共有N組(1=< N <=10),接下來N行,每行有4個1到9之間的自然數(數據與數據之間用空格隔開)。
Output
共有N行,第K行對應于第K組4個1到9之間的自然數是否能用適當的算術運算使運算結果等于24,如果能,則輸出1,如果不能則輸出0。
Sample Input
2
1 2 3 7
1 1 1 1
Sample Output
1
0
.
.
.
.
.
分析
直接深搜
注意情況
.
.
.
.
.
程序:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;bool bz=false,b[20];
int n,a[20];void dfs(int sum,int tj)
{if (tj==4){if (sum==24) bz=true;return;}for (int i=1;i<=4;i++)if (b[i]==false){b[i]=true;dfs(sum+a[i],tj+1);dfs(sum-a[i],tj+1);dfs(sum*a[i],tj+1);if (sum%a[i]==0) dfs(sum/a[i],tj+1);dfs(a[i]-sum,tj+1);b[i]=false;}
}int main()
{freopen("game.in","r",stdin);freopen("game.out","w",stdout);scanf("%d",&n);for (int i=1;i<=n;i++){for (int j=1;j<=4;j++)scanf("%d",&a[j]);bz=false;memset(b,false,sizeof(b));for (int j=1;j<=4;j++)dfs(a[j],1);if (bz==true) printf("1\n"); else printf("0\n");}fclose(stdin);fclose(stdout);return 0;
}
轉載于:https://www.cnblogs.com/YYC-0304/p/11094926.html
總結
以上是生活随笔為你收集整理的益智游戏的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。