算法分析的课程设计,做了一个布线问题一个算12,。算12和24点差不多,改一改参数就成24点了。布线问题写完之后还用js写了一遍,用HTML做了个界面呢。其实只是课程设计时间太长我太无聊了。
第一个是算12
#include <iostream>
#include <string>
#include <strstream>
#include <math.h>
#include <stdlib.h>
using namespace std;
const int NUMBER_TO_NUMBER = 3;
const int TARGET_NUMBER = 12;
const double ZERO = 1E-6;
double number[NUMBER_TO_NUMBER];
int is_cal[NUMBER_TO_NUMBER] = {0};
string str[NUMBER_TO_NUMBER];
bool Calculation(int n, int position);
bool Cal();
string inttostring(int &i);
int main()
{
int x;
char buffer[20];
cout << "pleas entry "<< NUMBER_TO_NUMBER<< " numbers"<< endl;
for(int i = 0; i < NUMBER_TO_NUMBER; i++){
cin >> x;
number[i] = x;
str[i] = itoa(x, buffer, 10);
}
if(Cal()){
cout << "success!";
}
else{
cout << "false!";
}
return 0;
}
bool Cal(){
for(int i =0 ; i < NUMBER_TO_NUMBER; i++){
if(Calculation(NUMBER_TO_NUMBER - 1, i)){
return true;
}
}
return false;
}
bool Calculation(int n, int position){
string stemp1, stemp2;
double itemp1;
is_cal[position] = 1;
for(int i = 0; i < NUMBER_TO_NUMBER; i++){
if(is_cal[i] == 0){
is_cal[i] = 1;
itemp1 = number[i];
stemp1 = str[i];
number[i] = number[i] + number[position];
//cout << str[position];
str[i] = "(" + stemp1 + "+" + str[position] + ")";
//cout << str[