|
发表于 2016-8-30 13:16:45
|
显示全部楼层
周长:12
3,4,5
周长:24
6,8,10
周长:30
5,12,13
周长:36
9,12,15
周长:40
8,15,17
周长:48
12,16,20
周长:56
7,24,25
周长:60
10,24,26
15,20,25
周长:70
20,21,29
周长:72
18,24,30
周长:80
16,30,34
周长:84
12,35,37
21,28,35
周长:90
9,40,41
15,36,39
周长:96
24,32,40
周长:108
27,36,45
周长:112
14,48,50
周长:120
20,48,52
24,45,51
30,40,50
周长:126
28,45,53
周长:132
11,60,61
33,44,55
周长:140
40,42,58
周长:144
16,63,65
36,48,60
周长:150
25,60,65
周长:154
33,56,65
周长:156
39,52,65
周长:160
32,60,68
周长:168
21,72,75
24,70,74
42,56,70
周长:176
48,55,73
周长:180
18,80,82
30,72,78
45,60,75
周长:182
13,84,85
周长:192
48,64,80
周长:198
36,77,85
周长:200
40,75,85
周长:204
51,68,85
周长:208
39,80,89
周长:210
35,84,91
60,63,87
周长:216
54,72,90
周长:220
20,99,101
周长:224
28,96,100
周长:228
57,76,95
周长:234
65,72,97
周长:240
15,112,113
40,96,104
48,90,102
60,80,100
周长:252
36,105,111
56,90,106
63,84,105
周长:260
60,91,109
周长:264
22,120,122
66,88,110
周长:270
27,120,123
45,108,117
周长:276
69,92,115
周长:280
35,120,125
56,105,119
80,84,116
周长:286
44,117,125
周长:288
32,126,130
72,96,120
周长:300
50,120,130
75,100,125
1000下最多组解的有4
为周长=240周长:240
15,112,113
40,96,104
48,90,102
60,80,100
请按任意键继续.
代码写得好辣鸡#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
//输出p(周长)的解组
int maxx = 0,maxN;
bool isin(vector<string> &result,string str)
{
for (int n =0;n<result.size();n++)
{
if(result[n] == str)
return true;
}
return false;
}
void calc(int p)
{
int n = 0;
int j = 0;
vector<string> result;
for (int i=1;i<p;i++)
{
for (int b=i;b<p;b++)
{
int c = p-i-b;
if(c<=0)
continue;
int bian[3]={i,b,c};
sort(bian,bian+3); //斜边是bian[2]
if(i+b+c == p)
{
//直角三角形
if(bian[0]*bian[0] + bian[1]*bian[1] == bian[2]*bian[2])
{
//
string temp;
char buf[20];
itoa(bian[0],buf,10);
temp = buf;
temp+=',';
itoa(bian[1],buf,10);
temp += buf;
temp+=',';
itoa(bian[2],buf,10);
temp += buf;
if(!isin(result,temp))
result.push_back(temp);
}
}
}
}
if(result.size())
std::cout<<"周长:"<<p<<endl;
for (int i = 0; i < result.size(); i++)
{
std::cout<<result[i]<<endl;
}
if(result.size()>maxx)
{
maxN = p;
maxx = result.size();
}
}
int main(void)
{
for (int i = 2;i<=300;i++)
{
calc(i);
}
std::cout<<"1000下最多组解的有"<<maxx<<endl;
std::cout<<"为周长="<<maxN;
calc(maxN);
return 0;
}
|
|