黑马程序员技术交流社区
标题:
分享一道题吧,估计大家都见过
[打印本页]
作者:
孟浩然
时间:
2012-6-30 09:24
标题:
分享一道题吧,估计大家都见过
题目:根据上排给出的十个数,在其下排填出对应的十个数,要求下排每个数都是上排十个数在下排出现的次数
也是在csdn上看到的,上次做的时候愣是看不懂怎么回事,昨晚上在笔记本上又看见了,然后在本子上把排列的情况都画了画,找到了一点规律,大体思路是这样的:下排的数组初始化时的大小应该和上排大小一样,而且默认元素都是0,我就拿上排每个元素在下排数组里找它出现的个数,然后改变下排对应元素的值,依次循环,可以得出下排数组;代码:
/*
根据上排给出的十个数,在其下排填出对应的十个数,要求下排每个数都是上排十个数在下排出现的次数
*/
class GetNextArray
{
public static void main(String[] args)
{
//System.out.println("Hello World!");
int[] arr1={0,1,6,3,5,4,2,7,8,9};
int[] arr2=new int[arr1.length];
for(int y=0;y<arr1.length;y++)
{
for (int x=0;x<arr1.length ;x++ )
{
int a=getCount(arr1[x],arr2);
if(arr2[0]==0)
arr2[0]=a-1;
else
arr2[x]=a;
}
}
printArray(arr1);
System.out.println();
printArray(arr2);
}
//获得每个元素在数组中出现的次数
public static int getCount(int key,int[] arr)
{
int count=0;
for (int x=0;x<arr.length ;x++ )
{
if (key==arr[x])
count++;
}
return count;
}
//打印数组
public static void printArray(int[] arr)
{
for (int x=0;x<arr.length ;x++ )
{
if(x!=arr.length-1)
System.out.print(arr[x]+",");
else
System.out.print(arr[x]);
}
}
}
复制代码
代码里的第一个for循环的判断条件,我找不到,我把每次排列都列了出来,然后找到了y<arr1.length,说不出原因,但是结果是正确的,如果有人知道,说一下哈;还有这个程序不一定要是十位数,但是只能在五位以上,{0,1,2,3,4}得不出结果,在上面的代码里看不出原因,但是如果把上面代码用while循环的话,我发现其实就是个无限循环,程序无法找到结果,试了很多次,都不行;原题给出的例子是0-9有序数组,我把它顺序打乱了也可以算出来。
作者:
雨后的温暖
时间:
2012-7-7 18:20
学习了,这块是我看视频 看得最头疼的部分!老捣了!
作者:
fhvjsichd
时间:
2015-5-21 21:21
duang
duang
duang...
世界很大,我想去看看。。。钱包那么小,我想去当老板!
深圳前海广深发(简称“广深发”)www.qhgsf.com
5月8号开业,7大活动
带上大家一起赚利息
大家都赚赚赚!
【活动一】新用户首投,奖奖奖
【活动二】邀请好友,赚取利息奖
【活动三】活跃“粉丝”,奖奖奖
【活动四】感恩客户再次充值,送送送
【活动五】回款续投奖励
【活动六】约标奖励
【活动七】月标利率及奖励
前海广深发交流QQ群:86393392,前海广深发咨询热线:400-998-0755
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2