- 24点游戏
- 2009-08-04 21:58:56 @
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案错误... ├ 标准行输出 0
├ 错误行输出 1
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案错误... ├ 标准行输出 0
├ 错误行输出 1
├ 测试数据 10:答案正确... 0ms
Unaccepted 有效得分:80 有效耗时:0ms
var s:string;
a,b:array[1..10] of real;
i,j,k,t:longint;
procedure try(s:char;var a:real);
begin
case s of
'A': a:=1;
'J': a:=11;
'Q': a:=12;
'K': a:=13;
end;
if a=0 then a:=ord(s)-48;
end;
procedure work(n:longint);
var temp:real;
begin
if n=1 then if abs(a[1]-24)=0 then begin writeln('1'); halt; end else exit;
if a[1]=0 then exit;
temp:=a[1];
a[1]:=a[n]+a[1];work(n-1);a[1]:=temp;
a[1]:=a[1]-a[n];work(n-1);a[1]:=temp;
a[1]:=a[n]-a[1];work(n-1);a[1]:=temp;
a[1]:=a[1]*a[n];work(n-1); a[1]:=temp;
if a[n]0 then
begin
a[1]:=a[1] /a[n]; work(n-1); a[1]:=temp;
a[1]:=a[n] /a[1]; work(n-1); a[1]:=temp;
end;
end;
begin
readln(s);
try(s[1],b[1]);
try(s[3],b[2]);
try(s[5],b[3]);
try(s[7],b[4]);
for i:=1 to 4 do
for j:=1 to 4 do
if ij then
for t:=1 to 4 do
if (ti) and (tj) then
for k:=1 to 4 do
if (kt) and(ki) and(kj) then
begin
a[1]:=b[i]; a[2]:=b[j]; a[3]:=b[t]; a[4]:=b[k]; work(4);
end;
writeln('0');
end.
求教大牛,哪里错了?在此先谢谢了
1 条评论
-
我是百度啦啦啦 LV 8 @ 2016-12-10 12:45:18
#include <bits/stdc++.h>
using namespace std;typedef int arr[4];
bool flag;
arr d;
int r[100][100];
void dfs(int n,arr d)
{
if(!flag) {
int a,b,i,j,k,p,t;
arr c;
if (n==1 && d[0]==24) {
flag=true;
cout<<1<<endl;
}
else
for (i=0;i<n-1;i++)
for (j=i+1;j<n;j++){
a=d[i] ; b= d[j];
t=0;
for (k=0;k<n;k++)
if (k!=i && k!=j) c[t++]=d[k];
r[4-n][0]=a;
r[4-n][2]=b;
r[4-n][3]=-1;for ( p=0;p<4;p++){
switch(p){
case 0:r[4-n][3]=a+b; break;
case 1:r[4-n][3]=a-b; break;
case 2:r[4-n][3]=a*b; break;
case 3: if (b!=0) r[4-n][3]=a/b;break;
}
if (p==3 && b==0) break;
if (p==3 && a % b!=0) break;
r[4-n][1]=p;
c[t]=r[4-n][3];
dfs(n-1,c);
}
}
}
}int main()
{
int i;
char hehe;
for (i=0;i<4;i++) {
cin>>hehe;
if(hehe=='J') d[i]=11;
else if(hehe=='Q') d[i]=12;
else if(hehe=='K') d[i]=13;
else d[i]=hehe-'0';
}
flag=false;
dfs(4,d);
if (!flag) cout<<"0"<<endl;
return 0;
}
- 1