枚舉法——填寫運算符

#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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章