| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 839 人关注过本帖
标题:有个比较有趣的问题,各位高手们看看该怎么做啊
只看楼主 加入收藏
xueer
Rank: 1
等 级:新手上路
威 望:1
帖 子:511
专家分:0
注 册:2004-10-8
收藏
 问题点数:0 回复次数:9 
有个比较有趣的问题,各位高手们看看该怎么做啊

全班有N个人(2<=N<=45)排成一排,因为高矮不同需要调整。方法是:不调换左右位置,只让后退一步变成第二排,使第一排留下的人从左到右按降序排列。如果第二排不整齐也同样排序产生第三 排,直到都降序排列。调整时须找出一种使第一排留下尽可能多的人,调整第二排时也尽可能使最多的人留下,依次类推。

输入:总人数、每人的身高;

输出:第一排留下的人数、调整后共几排。

各位要是会的话请写出WIN-TC的程序来,谢谢啦。

搜索更多相关主题的帖子: 左右 
2004-10-09 14:47
空前
Rank: 1
等 级:新手上路
帖 子:1146
专家分:0
注 册:2004-5-11
收藏
得分:0 

晕,花了我一个小时的时间:

#include<stdio.h> int main() {int a[50][50],i,j,k,h=0,m,t,q,n; printf("Input n(2~45):"); scanf("%d",&n); if(n<2||n>45) {printf("Input error!\n"); getch();return 0;} for(i=0;i<50;i++) for(j=0;j<50;j++) a[i][j]=0; printf("Input everyone's shenga\n"); for(i=0;i<n;i++) scanf("%d",&a[0][i]); k=0; for(i=0;i<n;i++) {h=0; if(a[i][0]==0) break; aa: j=0; while(a[i][j]!=0) { if(a[i][j]<a[i][j+1]) {a[k+1][h++]=a[i][j]; for(m=j;a[i][m+1]!=0;m++) a[i][m]=a[i][m+1]; a[i][m]=0; } else j++;

} for(t=0;a[i][t]!=0;t++); for(q=0;q<t-1;q++) if(a[i][q]<a[i][q+1]) break; if(q<t-1) goto aa;

k++; } for(i=0;i<k;i++) {printf("line %d:",i+1); for(j=0;j<n;j++) if(a[i][j]!=0) printf("%5d",a[i][j]); printf("\n"); }

for(i=0;a[0][i]!=0;i++); printf("There are %d lines,the first line have %d persons.\n",k,i); printf("\n\n"); getch(); return 1; }

[此贴子已经被作者于2004-10-09 19:23:10编辑过]


2004-10-09 18:21
心若在
Rank: 1
等 级:新手上路
帖 子:82
专家分:0
注 册:2004-9-21
收藏
得分:0 

for(i=0;i<n;i++) for(j=0;j<n;j++) a[i][j]=0;

你是要给任何元素都赋值为0吗?

如果是为什么又要

for(i=0;i<n;i++) scanf("%d",&a[0][i]);


我知道我菜 但我会尽我最大的努力去帮助别人!
2004-10-09 18:44
空前
Rank: 1
等 级:新手上路
帖 子:1146
专家分:0
注 册:2004-5-11
收藏
得分:0 

首先建一个方阵,

里面的元素都是0,

开始站在第一排,

不符合要求的就往后站……


2004-10-09 19:25
xueer
Rank: 1
等 级:新手上路
威 望:1
帖 子:511
专家分:0
注 册:2004-10-8
收藏
得分:0 
请问你随便举个例子试了一下吗?我试了一下好象不太行,我是看不太懂,不过最不懂的就是return 0  和 return 1,这是什么意思啊,最好在程序上加上注释,麻烦你了。要不我看不懂啊

2004-10-10 20:17
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
这是一个标准的递归问题

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2004-10-10 20:21
xueer
Rank: 1
等 级:新手上路
威 望:1
帖 子:511
专家分:0
注 册:2004-10-8
收藏
得分:0 

空前的做法是不是好象少点什么啊?要不怎么举的例子输进去后输出结果都是There are1lines,the first line

have 1persons。呢?  如果改一改的话就好了,希望空前这位老大改好了发过来。谢谢啦

别的老大会的话也发上来让我看看,谢谢!~~


2004-10-10 20:34
空前
Rank: 1
等 级:新手上路
帖 子:1146
专家分:0
注 册:2004-5-11
收藏
得分:0 
不要把最高的人最后输入,这样第一排就不会是一个人了。

2004-10-11 18:00
xueer
Rank: 1
等 级:新手上路
威 望:1
帖 子:511
专家分:0
注 册:2004-10-8
收藏
得分:0 
OK  你这种算法挺酷的  谢谢你,麻烦你了!~~~~~~(采取knocker的建议,即使没这建议我也会的,因为毕竟是在不认识的情况下有人给解释嘛.无论怎样也要谢谢)

2004-10-11 21:03
空前
Rank: 1
等 级:新手上路
帖 子:1146
专家分:0
注 册:2004-5-11
收藏
得分:0 
呵呵,共同学习……

2004-10-12 09:50
快速回复:有个比较有趣的问题,各位高手们看看该怎么做啊
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016669 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved