| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
各位大虾看一下我的程序错在哪里?thx!检查了很久都发现不了哪里有错,麻烦帮忙看一下:
Codes:
#include<stdio.h>
#include<string.h>
void dao(int a[],int n)//数组倒序
{
int i,k;
for(i=0;i<n/2;i++){
k=a[n-i-1];a[n-i-1]=a[i];a[i]=k;
}
}
int main()
{
int i,j,k,l,m,n,total,n1,k1,x;int ch,min;int str[1024];
while(scanf("%d",&m)!=EOF){
for(x=0;x<m;x++){
scanf("%d%d",&n1,&k1);
total=0;
for(i=0;i<n1;i++)
scanf("%d",&str[i]);
if(n1==1){printf("%d\n",str[0]);continue;}
do{
k=0;
if(total==k1){
printf("%d",str[0]);
for(j=1;j<n1;j++)
printf(" %d",str[j]);
printf("\n");k=0;break;
}
for(i=n1-2;i>=0;i--){//一个个的往后找下一个组合
k=0;min=100000000;
for(j=i+1;j<n1;j++){
if(str[j]>str[i])
if(min>str[j]){
min=str[j];
l=j;k=1;
}
}
if(!k) continue;
ch=str[i];str[i]=str[l];str[l]=ch;
for(j=i+1;j<n1-1;j++){ //排序
for(n=j+1;n<n1;n++){
if(str[j]>str[n]) {
ch=str[j];str[j]=str[n];str[n]=ch;
}
}
}
total++;
if(total==k1){
printf("%d",str[0]);
for(j=1;j<n1;j++)
printf(" %d",str[j]);
printf("\n");k=0;break;
}
}
if(!k&&total<k1){dao(str,n1);total++;}//已经找到了最后一个之后再循环
else if(total==k1) break;
}while(1);
}
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator