请大家指点指点关于程序超时问题
题目:Time Limit: 1000MS
Description
lyl想送给wjh三个礼物,他想送给wjh三个戒指。商场有n个戒指。每个戒指价值v_i。。wjh很挑剔她想要个总价值大于等于k的礼物,而且不要相同的戒指,请问lyl有多少方案送?
Input
(请用scanf读入)
第一行t表示t个样例,1<=t<=100
每个样例
第一行有n和k 表示n个礼物 保证 1<=n<=1000 保证 0<=k<=10^16
下一行有n个v_i用空格相隔。表示n个戒指的价值(注意有时不同戒指的价值一样)保证 1<=v_i<=10^15 不保证有序
Output
n行。每一行表示多少种方案。
Sample Input
5
8 5
1 1 1 2 3 4 5 6
4 7
1 2 3 4
2 0
1 1
8 4
1 1 1 1 1 1 1 1
8 3
1 1 1 1 1 1 1 1
Sample Output
52
3
0
0
56
应该是我的算法太差,求指点改改算法
程序代码:# include <stdio.h>
int main (void)
{
int t;
int count;
int i, j, k;
int n;
long sum;
long v[1000];
int num = 0;
scanf("%d", &t);
for(count=0; count<t; count++)
{
scanf("%d %ld", &n, &sum); //表示n个礼物,总价值大于sum
for(i=0; i<n; i++)
{
scanf("%ld", &v[i]); //戒指的价钱
}
if(n < 3)
{
num = 0;
printf("%d\n", num);
}
else
{
num = 0;
for(i=0; i<n; i++)
{
for(j=i+1; j<n; j++)
{
for(k=j+1; k<n; k++)
{
if((v[i]+v[j]+v[k]) >= sum)
{
++num;
}
}
}
}
printf("%d\n", num);
}
}
return 0;
}
[ 本帖最后由 岑吼吼 于 2014-5-14 15:56 编辑 ]









