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