當前位置:遊戲中心平台 - 遊戲盒子 - C語言程序 算24點

C語言程序 算24點

#include<iostream>

using namespace std;

struct operation

{

int x;

int y;

int o;

}op[3];

bool co=false;

void g(int a[],int b[],int n,int i,int j)

{

int x,y;

for(x=0,y=1;x<n;x++)

{

if(x==i||x==j)continue;

b[y++]=a[x];

}

op[4-n].x=a[i];

op[4-n].y=a[j];

}

void f(int a[],int n)

{

int i,j,t,b[4];

if(n==1&&a[0]==24)co=true;

for(i=0;i<n-1;i++)

{

for(j=i+1;j<n;j++)

{

for(t=1;t<=6;t++)

{

switch(t)

{

case 1:g(a,b,n,i,j);

b[0]=a[i]+a[j];

op[4-n].o=t;

f(b,n-1);

if(co)return;

break;

case 2:g(a,b,n,i,j);

b[0]=a[i]-a[j];

op[4-n].o=t;

f(b,n-1);

if(co)return;

break;

case 3:g(a,b,n,i,j);

b[0]=a[i]*a[j];

op[4-n].o=t;

f(b,n-1);

if(co)return;

break;

case 4:

if(a[j]!=0&&a[i]%a[j]==0)

{

g(a,b,n,i,j);

b[0]=a[i]/a[j];

op[4-n].o=t;

f(b,n-1);

if(co)return;

}

break;

case 5:g(a,b,n,i,j);

b[0]=a[j]-a[i];

op[4-n].o=t;

f(b,n-1);

if(co)return;

break;

case 6:

if(a[i]!=0&&a[j]%a[i]==0&&a[j]>a[i])

{

g(a,b,n,i,j);

b[0]=a[j]/a[i];

op[4-n].o=t;

f(b,n-1);

if(co)return;

}

break;

}

}

}

}

}

void h(int a[],int n,int x,int y,int h)

{

int i,j,b[4];

bool bx=false,by=false;

for(i=0,j=0;i<n;i++)

{

if(a[i]==x&&bx==false)

{

bx=true;

continue;

}

if(a[i]==y&&by==false)

{

by=true;

continue;

}

b[j++]=a[i];

}

for(i=0;i<n-1;i++)a[i+1]=b[i];

a[0]=h;

}

void main()

{

int a[4],i,j;

cout<<"輸入4個整數:";

for(i=0;i<4;i++)cin>>a[i];

f(a,4);

if(co)

{

for(i=0;i<3;i++)

{

for(j=0;j<4-i;j++)cout<<a[j]<<" ";

cout<<"\n運算 ";

switch(op[i].o)

{

case 1:cout<<op[i].x<<"+"<<op[i].y<<endl;

h(a,4-i,op[i].x,op[i].y,op[i].x+op[i].y);

break;

case 2:cout<<op[i].x<<"-"<<op[i].y<<endl;

h(a,4-i,op[i].x,op[i].y,op[i].x-op[i].y);

break;

case 3:cout<<op[i].x<<"*"<<op[i].y<<endl;

h(a,4-i,op[i].x,op[i].y,op[i].x*op[i].y);

break;

case 4:cout<<op[i].x<<"/"<<op[i].y<<endl;

h(a,4-i,op[i].x,op[i].y,op[i].x/op[i].y);

break;

case 5:cout<<op[i].y<<"-"<<op[i].x<<endl;

h(a,4-i,op[i].x,op[i].y,op[i].y-op[i].x);

break;

case 6:cout<<op[i].y<<"/"<<op[i].x<<endl;

h(a,4-i,op[i].x,op[i].y,op[i].y/op[i].x);

break;

}

}

cout<<"24"<<endl;

}

else cout<<"不能算出24"<<endl;

}

  • 上一篇:傳說世界裏的神罰!神族vs布拉格,史詩大賽,誰是贏家?
  • 下一篇:陰陽師 遊戲的角色是中國繪畫的嗎?
  • copyright 2024遊戲中心平台