锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> fun(int n)

{
vector<int> last,all;
int i,j,k;
for(i = 1;i < 10;++i)
all.push_back(i);
if(n == 1)
return all;
int size;
int num;
for(i = 2;i <= n;++i)
{
last = all;
all.clear();
size = (int)last.size();
for(j = 0;j < size;++j)
{
for(k = 0;k < 10;++k)
{
num = last[j] * 10 + k;
if(num % i == 0)
all.push_back(num);
}
}
last.clear();
}
return all;
}
int
聽MaxSubsequenceSum(
const
聽
int
聽A[],
int
聽N)
{
聽聽聽聽
int
聽ThisSum,MaxSum,i,j,k;
聽聽聽聽
聽聽聽聽MaxSum聽
=
聽
0
;
聽聽聽聽
for
(i聽
=
聽
0
;i聽
<
聽N;i
++
)
聽聽聽聽聽聽聽聽
for
(j聽
=
聽i;j聽
<
聽N;j
++
)
聽聽聽聽聽聽聽聽
{
聽聽聽聽聽聽聽聽聽聽聽聽ThisSum聽
=
聽
0
;
聽聽聽聽聽聽聽聽聽聽聽聽
for
(k聽
=
聽i;k聽
<=
聽j;k
++
)聽聽聽聽ThisSum聽
+=
聽A[k];聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽聽聽聽聽
if
(ThisSum聽
>
聽MaxSum)聽聽聽聽MaxSum聽
=
聽ThisSum;
聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽
聽聽聽聽
return
聽MaxSum;
}
int
聽MaxSubsequenceSum(
const
聽
int
聽A[],
int
聽N)
{
聽聽聽聽
int
聽ThisSum,MaxSum,i,j;
聽聽聽聽
聽聽聽聽MaxSum聽
=
聽
0
;
聽聽聽聽
for
(i聽
=
聽
0
;i聽
<
聽N;i
++
)
聽聽聽聽
{
聽聽聽聽聽聽聽聽ThisSum聽
=
聽
0
;
聽聽聽聽聽聽聽聽
for
(j聽
=
聽i;j聽
<
聽N;j
++
)
聽聽聽聽聽聽聽聽
{
聽聽聽聽聽聽聽聽聽聽聽聽ThisSum聽
+=
聽A[k];聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽聽聽聽聽
if
(ThisSum聽
>
聽MaxSum)聽聽聽聽MaxSum聽
=
聽ThisSum;
聽聽聽聽聽聽聽聽}
聽聽聽聽}
聽聽聽聽聽聽聽聽
聽聽聽聽
return
聽MaxSum;
}
static
聽
int
聽MaxSubSum(
const
聽
int
聽A[],
int
聽Left,
int
聽Right)
{
聽聽聽聽
int
聽MaxLeftSum,MaxRightSum;
聽聽聽聽
int
聽MaxLeftBorderSum,MaxRightBorderSum;
聽聽聽聽
int
聽LeftBorderSum,RightBorderSum;
聽聽聽聽
int
聽Center,i;
聽聽聽聽
聽聽聽聽
if
(Left聽
==
聽Right)
聽聽聽聽聽聽聽聽
if
(A[left]聽
>
聽
0
)聽聽聽聽
return
聽A[left];
聽聽聽聽聽聽聽聽
else
聽聽聽聽
return
聽
0
;
聽聽聽聽聽聽聽聽聽聽聽聽
聽聽聽聽Center聽
=
聽(Left聽
+
聽Right)聽
/
聽
2
;
聽聽聽聽MaxLeftSum聽
=
聽MaxSubSum(A,Left,Center);
聽聽聽聽MaxRightSum聽
=
聽MaxSubSum(A,Center聽
+
聽
1
,Right);
聽聽聽聽
聽聽聽聽MaxLeftBorderSum聽
=
聽
0
;
聽聽聽聽LeftBorderSum聽
=
聽
0
;
聽聽聽聽
for
(i聽
=
聽Center;i聽
>=
聽Left;i
--
)
聽聽聽聽
{
聽聽聽聽聽聽聽聽LeftBorderSum聽
+=
聽A[i];
聽聽聽聽聽聽聽聽
if
(LeftBorderSum聽
>
聽MaxLeftBorderSum)聽聽聽聽MaxLeftBorderSum聽
=
聽LeftBorderSum;
聽聽聽聽}
聽聽聽聽
聽聽聽聽MaxRightBorderSum聽
=
聽
0
;
聽聽聽聽RightBorderSum聽
=
聽
0
;
聽聽聽聽
for
(i聽
=
聽Center聽
+
聽
1
;i聽
<=
聽Right;i
++
)
聽聽聽聽
{
聽聽聽聽聽聽聽聽RightBorderSum聽
+=
聽A[i];
聽聽聽聽聽聽聽聽
if
(RightBorderSum聽
>
聽MaxRightBorderSum)聽聽聽聽MaxRightBorderSum聽
=
聽RightBorderSum;
聽聽聽聽}
聽聽聽聽
聽聽聽聽
return
聽Max3(MaxLeftSum,MaxRightSum,MaxLeftBorderSum聽
+
聽MaxRightBorderSum);
}
int
聽MaxSubsequenceSum(
const int聽聽A[],int
聽N)
{
聽聽聽聽
return
聽MaxSubSum(A,
0
,N聽
-
聽
1
);聽聽聽聽
}
intMaxSubsequenceSum(
const int
聽A[],
int
聽N)
{
聽聽聽聽
int
聽ThisSum,MaxSum,i;
聽聽聽聽
聽聽聽聽ThisSum聽
=
聽MaxSum聽
=
聽
0
;
聽聽聽聽
for
(i聽
=
聽
0
;i聽
<
聽N;i
++
)
聽聽聽聽
{
聽聽聽聽聽聽聽聽ThisSum聽
+=
聽A[i];
聽聽聽聽聽聽聽聽
if
(ThisSum聽
>
聽MaxSum)
聽聽聽聽聽聽聽聽聽聽聽聽MaxSum聽
=
聽ThisSum;
聽聽聽聽聽聽聽聽
else
聽聽聽聽聽聽聽聽聽聽聽聽ThisSum聽
=
聽
0
;
聽聽聽聽}
聽聽聽聽
聽聽聽聽
return
聽MaxSum;
}
鍙傝冦婃暟鎹粨鏋勪笌綆楁硶鍒嗘瀽銆?/font>
榪樻湁涓縐嶅緢綆鍗曠殑鏂規硶錛屼嬌鐢℅P涓殑鏂規硶
璇ョ畻娉曟槸STL涓殑鑼冨瀷綆楁硶錛屽綋鐒舵晥鏋滄槸寰堝ソ鐨勶紝涓嶄細鍑虹幇涓婇潰鐨勭畻娉曠殑鎯呭喌銆?br />
紼嬪簭鎻忚堪濡備笅錛?/font>
娉細榪欓噷鐨勫緟鍏ㄦ帓鐨勬暟鎹槸瀛樺湪鏁扮粍鎴栬呭悜閲忎腑鐨勩?/p>
string
聽int2str(
int
聽num)
{
聽聽聽
if
(num聽
==
聽
0
)
聽聽聽聽聽聽
return
聽
"
0
"
;
聽聽聽
聽聽聽
string
聽str聽
=
聽
""
;
聽聽聽
int
聽num_聽
=
聽num聽
>
聽
0
聽
?
聽num聽:聽
-
1
聽
*
聽num;
聽聽聽
while
(num_)
聽聽聽
{
聽聽聽聽聽聽str聽
=
聽(
char
)(num_聽
%
聽
10
聽
+
聽
48
)聽
+
聽str;
聽聽聽聽聽聽num_聽
/=
聽
10
;
聽聽聽 }
聽聽聽
if
(num聽
<
聽
0
)
聽聽聽聽聽聽str聽
=
聽
"
-
"
聽
+
聽str;
聽聽聽
return
聽str;
}
int
聽str2int(
string
聽str)
{
聽聽聽
int
聽i,len聽
=
聽str.size(),num聽
=
聽
0
;
聽聽聽 i聽
=
聽
0
;聽聽聽
聽聽聽
if
(str[
0
]聽
==
聽
'
-
'
)
聽聽聽聽聽聽i聽
=
聽
1
;
聽聽聽
聽聽聽
while
(i聽
<
聽len)
聽聽聽
{
聽聽聽聽聽聽num聽
=
聽num聽
*
聽
10
聽
+
聽(
int
)(str[i]聽
-
聽
'
0
'
);
聽聽聽聽聽聽i
++
;
聽聽聽 }
聽聽聽
if
(str[
0
]聽
==
聽
'
-
'
)
聽聽聽聽聽聽num聽
*=
聽
-
1
;
聽聽聽
return
聽num;
}