功能实现:任意给定5个数字,其中必定存在3个数字已经有序(或者升序,或者降序),找出这5个数字中最长的升序或降序序列。
例如:1,7,5,3,9。则{1,7,9},{1,5,9},{1,3,9}都是最长的升序序列;
而{7,5,3}是最长的降序序列。
再如:1,3,2,5,7。最长的升序序列为{1,3,5,7}和{1,2,5,7}。
自动生成各种可能的序列,对于5个数字所有可能的序列为:
{0,1,2,3}、{0,1,2,4}、{0,1,3,4}、{0,2,3,4}、{1,2,3,4}
{0,1,2}、{0,1,3}、{0,2,3}、{1,2,3}
{0,1,4}、{0,2,4}、{1,2,4}
{1,3,4}
{2,3,4}、{0,3,4}
考察各种可能的序列是否升序或是降序,若是则打印;
《《有什么错误纠正一下,调试其正确,能不能把BOOL函数用语句什么的替代了啊 ,我们没学过这个函数。
using namespace std; 能不能删掉啊?大家多帮帮忙——把它搞正确了,感激 不尽》》
#include <iostream>
using namespace std;
//判断序列是不是升序排列
bool is_up_ordered(int a, int b, int c, int d = -1, int e = -1){
if (e == -1)
return (a<b && b<c && c<d && d<e);
else if (d == -1)
return (a<b && b<c && c<d);
else
return (a<b && b<c);
}
//判断序列是不是降序排列
bool is_down_ordered(int a, int b, int c, int d = -1, int e = -1){
if (e == -1)
return (a>b && b>c && c>d && d>e);
else if (d == -1)
return (a>b && b>c && c>d);
else
return (a>b && b>c);
}
int main(){
int a[5];
int mark = 0;
//从终端输入5个数字
cin >> a[0] >> a[1] >> a[2] >> a[3] >> a[4];
//下面是找出升序序列
cout << "升序排序:" << "\n";
if (is_up_ordered(a[0], a[1], a[2], a[3], a[4])){
cout << a[0] << a[1] << a[2] << a[3] << a[4] << "\n";
}
else {
for (int i = 0; i < 5; ++i)
for (int j = i+1; j < 5; ++j)
for (int k = j+1;k < 5;++k)
for (int l = k+1;l < 5;++l){
if (is_up_ordered(a[i],a[j],a[k],a[l])){
cout << a[i] << a[j] << a[k] << a[l] << "\n";
mark = 1;
}
}
}
if (mark != 1){
for (int i = 0;i < 5;++i)
for (int j = i+1;j < 5;++j)
for (int k = j+1;k < 5;++k){
if (is_up_ordered(a[i],a[j],a[k]))
cout << a[i] << a[j] << a[k] << "\n";
}
}
mark = 0;
//下面是找出降序序列
cout << "降序排序:" << "\n";
if (is_down_ordered(a[0], a[1], a[2], a[3], a[4]){
cout << a[0] << a[1] << a[2] << a[3] << a[4] << "\n";
}
else {
for (int i = 0; i < 5; ++i)
for (int j = i+1; j < 5; ++j)
for (int k = j+1;k < 5;++k)
for (int l = k+1;l < 5;++l){
if (is_down_ordered(a[i],a[j],a[k],a[l])){
cout << a[i] << a[j] << a[k] << a[l] << "\n";
mark = 1;
}
}
}
if (mark != 1){
for (int i = 0;i < 5;++i)
for (int j = i+1;j < 5;++j)
for (int k = j+1;k < 5;++k){
if (is_down_ordered(a[i],a[j],a[k]))
cout << a[i] << a[j] << a[k] << "\n";
}
}
system("pause");
}
[此贴子已经被作者于2007-7-1 14:33:36编辑过]