1.由0到4五个数字,组成5位数,每个数字用一次,但十位和百位不能为3(当然万位不能为0),输出所有可能的五位数。
#include<stdio.h>
int main()
{
int a,b,c,d,e,n=0,h;
for(a=0;a<=4;++a)
{
for(b=0;b<=4;++b)
{
for(c=0;c<=4;++c)
{
for(d=0;d<=4;++d)
{
for(e=1;e<=4;++e)
{
if(ab||bc||cd||de||b3||c3||ac||ad||ae||bd||be||ce)
h=h+1;
else
{
printf("%d%d%d%d%d\n",e,d,c,b,a);
n=n+1;
}
}
}
}
}
}
printf(“一共有%d种可能\n”,n);
}
2.最大子段和问题。给定由n个整数组成的序列,求序列中子段的最大和,若所有整数均为负整数时定义最大子段和为0。
例如, 当(a1,a2,a3,a4 ,a5,a6) = (-2,11,-4,13,-5,-2)时,最大子段和为: a2+a3+a4=20
输入格式:
第一行输入整数个数n(1≤n≤10000),再依次输入n个整数。
输出格式:
输出第一行为最大子段和,第二行为子段第一个数和最后一个数在整个序列中的位序。
输入样例1:
6
-2 11 -4 13 -5 -2
输出样例1:
20
2 4
#include<stdio.