请大家指点指点关于程序超时问题
题目: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 编辑 ]