如图所示六角形中填入1-12的数字,使每条直线上的数字和相等,图中已经填好了3个数字,请你计算*号数字是多少 蓝桥杯老套路,经常这样考全排列,把剩下的数字全排列对于到每个格子中,判断是否可行即可
#include<cstdio> #include<iostream> #include<algorithm> using namespace std; int pp[9]={2,4,5,6,7,9,10,11,12};//从左到右从上到下一次对应 bool check(){ int flag=1; int t=1+pp[0]+pp[3]+pp[5]; if(t==1+pp[1]+pp[4]+pp[8])flag++; if(t==pp[5]+pp[6]+pp[7]+pp[8])flag++; if(t==8+pp[0]+pp[1]+pp[2])flag++; if(t==8+pp[3]+pp[6]+3)flag++; if(t==pp[2]+pp[4]+pp[7]+3)flag++; if(flag==6)return true; return false; } int main(){ do{ if(check()){ for(int i=0;i<9;i++){ printf("%d ",pp[i]); } break; } }while(next_permutation(pp,pp+9)); return 0; }