|
沙发
楼主 |
发表于 2014-11-22 15:12:06
|
只看该作者
例题2 将1到9 九个数字围成一个边长为4 的正三角形,让每条边上的数字和都等于P,输入P,问有多少种摆法呢?
好理解 但是效率不高的解法
- # include <iostream>
- int a,b,c,d,e,f,g,h,i,p;//表示这9 个数字
- int aa[10];//a[0]被浪费了;
- bool bb;
- int ii;
- using namespace std;
- int main()
- {
- cin>>p;
- for (a=1;a<=9;a++)
- for (b=1;b<=9;b++)
- for (c=1;c<=9;c++)
- for (d=1;d<=9;d++)
- for (e=1;e<=9;e++)
- for (f=1;f<=9;f++)
- for (g=1;g<=9;g++)
- for (h=1;h<=9;h++)
- for (i=1;i<=9;i++)
- if ((a+b+c+d==p) &&(d+e+f+g==p) &&(g+h+i+a==p) )
- {
- bb=true;
- for (ii=1;ii<=9;ii++) aa[ii]=1;
- aa[a]--;aa[b]--;aa[c]--;aa[d]--;aa[e]--;
- aa[f]--;aa[g]--;aa[h]--;aa[i]--;
- ii=1;while ((ii<=9) && bb) {if (aa[ii]<0) bb=false; else ii++;}
- if (bb)
- { cout <<a<<'+'<<b<<'+'<<c<<'+'<<d<<'=';
- cout <<d<<'+'<<e<<'+'<<f<<'+'<<g<<'=';
- cout <<g<<'+'<<h<<'+'<<i<<'+'<<a<<endl;
- }
- }
- }
复制代码 |
|