方法:暴力枚举
1 | a | b | c | d |
---|---|---|---|---|
e | f | g | h | 10 |
依题意得:
只需满足
1.a,b,c,d,e,f,g,h各不相同
2.横行 a<b && b<c && c<d && e<f && f<g && g<h
3.纵行 a<f && b<g && c<h
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b,c,d,e,f,g,h,i,ans=0,jud=0;
for(a=2;a<10;a++)
for(b=2;b<10;b++)
for(c=2;c<10;c++)
for(d=2;d<10;d++)
for(e=2;e<10;e++)
for(f=2;f<10;f++)
for(g=2;g<10;g++)
for(h=2;h<10;h++){
int test[8]={a,b,c,d,e,f,g,h};
sort(test,test+8); //sort函数排列test[8],test[i]与i+2比较
for(i=0;i<8;i++)
if(test[i]==i+2) jud++;
if(jud==8) //当排序后 2 3 4 5 6 7 8 9才可(不重复)
if(a<b&&b<c&&c<d&&e<f&&f<g&&g<h)
if(a<f&&b<g&&c<h)
ans++;
jud=0; //jud归零
}
printf("%d",ans);
return 0;
}