作业帮 > 综合 > 作业

有36头猪,每天杀单数头,分九天杀完,怎么用C++或C语言程序证明无解?

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/03 17:13:10
有36头猪,每天杀单数头,分九天杀完,怎么用C++或C语言程序证明无解?
分数是少了点,麻烦了啊……
一、穷举算法:
穷举每天杀猪数,若最后9天杀不完或提早杀完则证明无解.
利用递归完成:
#include
//PIG头猪,分DAY天杀完,每天杀单数头
const int DAY=9;
const int PIG=36;
bool DFS(int day,int remain) //第day天剩下remain只猪,若最后能杀完则返回1,否则返回0
{
if(day>DAY) //如果DAY天已过,剩余0只返回1,即能杀完,否则返回0
return remain==0;
int i;
for(i=1;i=0) (2)
则由(1)(2)得 PIG==2*(p1+p2+p3+...+pDAY)+DAY
显然如果等式成立,则PIG与DAY奇偶性相同

PIG%2==DAY%2
#include
const int DAY=9;
const int PIG=36;
int main()
{
if(PIG%2==DAY%2)
puts("有解");
else
puts("无解");
getchar();
return 0;
}