//百鸡问题
#include
using namespace std;
int chick_question(int n, int g[], int m[], int s[])
{
int a, b, c, k = 0;
for (a = 0; a <= n; a++)
{
for (b = 0; b <= n; b++)
{
for (c = 0; c <= n; c++)
if (a + b + c == n && 5 * a + 3 * b + c / 3 == n&&c % 3 == 0)
{
g[k] = a;
m[k] = b;
s[k] = c;
k++;
}
}
}
return k;
}
int main()
{
int g[100], m[100], s[100];
int n, k;
cout << "输入鸡的数量" << endl;
cin >> n;
k = chick_question(n, g, m, s);
cout << "共有" << k << "种分配方案" << endl;
for (int i = 0; i < k; i++)
{
cout << "第" << i + 1 << "种分配方案" << " ";
cout << "公鸡只数为" << g[i] << " ";
cout << "母鸡只数为" << m[i] << " ";
cout << "雏鸡只数为" << s[i] << endl;
}
return 0;
}
//这个算法的时间复杂度为O(n^3)
#include
using namespace std;
int chick_question(int n, int g[], int m[], int s[])
{
int a, b, c;
int i, j, k = 0;
i = n / 5;
j = n / 3;
for (a = 0; a <= i; a++)
{
for (b = 0; b <= j; b++)
{
c = n - a - b;
if ((5 * a + 3 * b + c / 3 == n) && (c % 3 == 0))
{
g[k] = a;
m[k] = b;
s[k] = c;
k++;
}
}
}
return k;
}
int main()
{
int g[100], m[100], s[100];
int n, k;
cout << "输入鸡的数量" << endl;
cin >> n;
k = chick_question(n, g, m, s);
cout << "共有" << k << "种分配方案" << endl;
for (int i = 0; i < k; i++)
{
cout << "第" << i + 1 << "种分配方案" << " ";
cout << "公鸡只数为" << g[i] << " ";
cout << "母鸡只数为" << m[i] << " ";
cout << "雏鸡只数为" << s[i] << endl;
}
return 0;
}
//这个是优化后的算法,时间复杂度为O(n^2)
#include
using namespace std;
int main()
{
int m,g,n;
cout<<"输入n: ";
cin>>n;
for(g=1;g<=n/5;++g)
for(m=1;m<=n/3;++m)
{
if((n-g-m)!=3*(n-5*g-3*m)) continue;
cout<<"公鸡: "<
}
return 0;
随手编的,不知道有没有错。
#include
void main()
{
int n,a,b,c;
scanf("%d",&n);
for(a=1;a
for(b=1;b
c=n-a-b;
if((c%3==0)&&(5*a+3*b+c/3==n))
printf("%d %d %d\n",a,b,c);
}
}
}
a,b,c分别为鸡翁,鸡母,鸡雏的数量