nyist-91上面的贪心算法一类的,思路比较简单,直接贴一下代码吧!
#include <stdio.h>
#include <iostream>
using namespace std;
int a[9]={1,2,6,24,120,720,5040,40320,362880}; //只需要到a9就可以了,因为第十个超过了数的范围。
int main()
{
int m,n;
int i; //m表示测试的次数,n表示输入的数字;int的范围比较大,可以容纳1000000;
cin >> m;
while(m--)
{
cin >> n;
for(i = 8; i >= 0; i--)
{
if(n-a[i] >= 0)
n = n-a[i];
}
if( n == 0)
cout << "yes" << endl;
else
cout << "no" << endl;
}
return 0;
}本文出自 “我的算法笔记” 博客,谢绝转载!
原文:http://liu168ad.blog.51cto.com/7511123/1391909