题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1089

在我接触这道题之前,我一向认为当出现三重循环时,一般就会超时,这次我感觉我错了,我突然觉得数据结构很重要,对时间的分析;

就此题而言,分析下数据量,其实并不大,可以暴力解决掉;

也就是在我写深搜时突然感觉暴力应该是最简单的做法;

如果了解了题意,就不会对我的代码有看不懂的说法了:

了解下题目要求,便是从给定的数组中选6个数字,这6个数字要求递增,还要求每组数字与下组数字相比也要递增:

暴力代码如下:

View Code
#include<stdio.h>
#include<string.h>
int num[20];
int main()
{
int n,k;
k=0;
while(scanf("%d",&n),n)
{
if(k!=0)
printf("\n");
k=1;
memset(num,0,sizeof(num));/////
for(int i=0;i<n;i++)
{
scanf("%d",&num[i]);
}
for(int i1=0;i1<n;i1++)
{
for(int i2=i1+1;i2<n;i2++)
{
for(int i3=i2+1;i3<n;i3++)
{
for(int i4=i3+1;i4<n;i4++)
{
for(int i5=i4+1;i5<n;i5++)
{
for(int i6=i5+1;i6<n;i6++)
{
printf("%d %d %d %d %d %d\n",num[i1],num[i2],num[i3],num[i4],num[i5],num[i6]);
}
}
}
}
}
}
}
return 0;
}

 

 

posted on 2012-03-26 20:13  world_ding  阅读(147)  评论(0编辑  收藏  举报