欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

P1149火柴棒等式-C++编程解析-函数

程序员文章站 2024-03-24 16:18:58
...

P1149火柴棒等式-C++编程解析-函数
P1149火柴棒等式-C++编程解析-函数
P1149火柴棒等式-C++编程解析-函数
解题思路:
首先,我们要将数字0-9所用的火柴棒数目存储到数组中,因为,n的范围小于等于24,所以,999是等式当中可能出现的最大的数字,所以,我们从0-999,挑选两个加数,计算出两个加数所用的火柴数目,再计算出两个加数和的火柴数目,将前两项火柴数目的和加上加号和等号所用的火柴数目。是否将火柴全部用完。用完则满足条件,否则,则不是。

参考程序:

#include<iostream>
using namespace std;
const int equ = 4;
const int MAX_NUM = 999;      //"+","="用去的火柴数 
int num[10] = {6,2,5,5,4,5,6,3,7,6};   //数字对应的火柴数目
//数字n用的火柴数 
int matchNum(int n){
	if(n == 0)
		return num[0];
	int total = 0;
	while(n){
		total += num[n%10];
		n /= 10;
	}
	return total;
} 
//等式成立判断 
bool equSuccess(int plus1,int plus2,int n){
	if((matchNum(plus1) + matchNum(plus2) + matchNum(plus1+plus2))== n)
		return true;
	return false;
}
int main(){
	int n;
	int res = 0;
	cin>>n;
	n -= equ;
	//查找所有可能性 
	for(int i = 0;i < MAX_NUM;i++){
		for(int j = 0;j < MAX_NUM;j++){
			if(equSuccess(i,j,n)){
				res++;
			}
		}
	}
	cout<<res;
	return 0;
}

程序结果:
P1149火柴棒等式-C++编程解析-函数
P1149火柴棒等式-C++编程解析-函数
P1149火柴棒等式-C++编程解析-函数