象棋算式

    科技2025-09-30  51

    1、非递归回溯法

    #include<stdio.h> #include<string.h> int main() { bool dig[10]; int a,b,c,d,e,m,n,s; memset(dig,0,sizeof(dig)); for(a=1;a<=9;a++){//兵 dig[a]=1; for(b=0;b<=9;b++){//炮 if(!dig[b]){ dig[b]=1; for(c=0;c<=9;c++){//马 if(!dig[c]){ dig[c]=1; for(d=0;d<=9;d++){//卒 if(!dig[d]){ dig[d]=1; for(e=0;e<=9;e++){//车 if(!dig[e]){ dig[e]=1; m=a*1000+b*100+c*10+d; n=a*1000+b*100+e*10+d; s=e*10000+d*1000+c*100+a*10+d; if(m+n==s)printf("兵:%d 炮:%d 马:%d 卒:%d 车:%d\n",a,b,c,d,e); dig[e]=0; } } dig[d]=0; } } dig[c]=0; } } dig[b]=0; } } dig[a]=0; } return 0; }
    Processed: 0.014, SQL: 8