枚举法——填写运算符

#include<stdio.h>
int main()
{
	int j,i[5];//用来表示4个运算符
	int sign;//累加运算时的符号
	int result;//保存运算式的结果
	int count=0;//计数器,统计符合条件的方案
	int num[6];//保存操作数
	float left,right;//上一步结果,下一步结果
	char oper[5]={' ','+','-','*','/'};//运算符
	printf("请输入5个数:");
	for(j=1;j<=5;j++)
		scanf("%d",&num[j]);
	printf("请输入结果:");
	scanf("%d",&result);
	for(i[1]=1;i[1]<=4;i[1]++)
		//循环四种运算,1表示+,2表示-,3表示*,4表示/
	{
		if((i[1]<4)||(num[2]!=0))//运算符若是/,则第二个运算数不能为0
		{
			for(i[2]=1;i[2]<=4;i[2]++)
			{
				if(i[2]<4||(num[3]!=0))
				{
					for(i[3]=1;i[3]<=4;i[3]++)
					{
						if((i[3]<4||num[4]!=0))
						{
							for(i[4]=1;i[4]<=4;i[4]++)
							{
								if((i[4]<4)||(num[5]!=0))
								{
									left=0;
									right=num[1];
									sign=1;
									for(j=1;j<=4;j++)
									{
										switch(oper[i[j]])
										{
										case '+':
											left=left+sign*right;
											sign=1;
											right=num[j+1];
											break;
										case '-':
											left=left+sign*right;
											sign=-1;
											right=num[j+1];
											break;
										case '*':
											right=right*num[j+1];
											break;
										case '/':
											right=right/num[j+1];
											break;
										}
									}
									if(left+sign*right==result)
									{
										count++;
										printf("%3d:",count);
										for(j=1;j<=4;j++)
											printf("%d%c",num[j],oper[i[j]]);
										printf("%d=%d\n",num[5],result);
									}
								}
							}
						}
					}
				}
			}
		}
	}
	if(count==0)
		printf("没有符合要求的方法!\n");
	return 0;
}

解决:在下面的算式中,添加“+”,“-”,“*“,”/”运算符,使等式成立。

5 5 5 5 5 =5


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值