如何用Pythonjava数组打印出来一个数组里所有重复元素的元素,下标,以及该元素重复的次数

他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)欢迎加入我们,一同切磋技术。 &
用户名: &&&
密 码: &
共有 6561 人关注过本帖
标题:输入一个3行4列的数组,找出该数组中绝对值最大的元素、输出该元素及其两个 ...
等 级:新手上路
结帖率:100%
&&已结贴√
&&问题点数:20&&回复次数:5&&&
输入一个3行4列的数组,找出该数组中绝对值最大的元素、输出该元素及其两个下标值。如有多个输出行号最小的,还有多个的话输出列号最小的。
输入一个3行4列的数组,找出该数组中绝对值最大的元素、输出该元素及其两个下标值。如有多个输出行号最小的,还有多个的话输出列号最小的。
#include &stdio.h&
#include &math.h&
int main()
&&& int a[3][4],amax,r,c,i,j;
&&& for(i=0;i&3;i++)
&&& {for(j=0;j&4;j++)
&&&&&&&&& scanf(&%d&,&a[i][j]);
&&&&&& if(i&2) scanf(&\n&);}
&&& amax=a[0][0];
&&&r=1;c=1;
&&& for(i=0;i&3;i++)
&&&&&& for(j=0;j&4;j++)
&&&&&& {&&&&&&
&&&&&&&&& if(fabs(a[i][j])&fabs(amax))
&&&&&&&&&&&{amax=a[i][j];r=i+1;c=j+1;}&&&&&
&&& printf(&%d %d %d\n&,amax,r,c);
&&& return 0;
程序跟题目哪里不一致了,还是哪里出错了,求高手指教
搜索更多相关主题的帖子:
等 级:论坛游民
专家分:19
这个按照样例输入可以得到样例输出
#include &stdio.h&
#include &math.h&
int main()
&&& int a[3][4],amax,r,c,i,j;
&&& for(i=0;i&3;i++)
&&&&&&&&&for(j=0;j&4;j++)
&&&&&&&&& {
&&&&&&&&&&&& scanf(&%d&,&a[i][j]);
&&&&&&&&& }
&&& amax=a[0][0];
&&& for(i=0;i&3;i++)
&&&&&& for(j=0;j&4;j++)
&&&&&& {&&&&&&
&&&&&&&&& if(fabs(a[i][j])&fabs(amax))
&&&&&&&&&&&{
&&&&&&&&&&&&&&&amax=a[i][j];r=i+1;c=j+1;
&&&&&&&&&&&}
&&&&&& }&&&&&
&&& printf(&%d %d %d\n&,amax,r,c);
&&& return 0;
等 级:新手上路
回复 2楼 会与不会
谢谢,就是还有些问题,我用清澄网络自动评测系统测,显示错误,可以得58分。还是跟题意契合度不够
来 自:湖南桂东
等 级:职业侠客
帖 子:132
专家分:386
可能题目是要求先找出最大的数,考虑到有多个,编程要有体现,再选其中最小行的。而你的虽然结果对,但并无比较行列大小的语句。
等 级:新手上路
回复 4楼 cuijunchao
具体怎么改进呢
来 自:湖北
等 级:蝙蝠侠
帖 子:395
专家分:922
回复 4楼 cuijunchao
什么题目啊,本来就是从&&最小行&&最小列 读起,完全可以忽略以后一样大的,有比的必要吗?
[ 本帖最后由 虾B写 于
19:34 编辑 ]
白娘故意下雨骗许仙的伞。祝英台十八里相送时装疯卖傻调戏梁山伯。七仙女挡住了董永的去路。牛郎趁织女洗澡时拿走了她的衣服。。。这些故事告诉我们;伟大爱情的开始,总归的有一个要先耍流氓!
版权所有,并保留所有权利。
Powered by , Processed in 0.143692 second(s), 7 queries.
Copyright&, BCCN.NET, All Rights Reservedpython怎么从一个数组里面选出出现频数最多的元素?_百度知道
python怎么从一个数组里面选出出现频数最多的元素?
34,45,67,12,12,34比如a=[12,23
我有更好的答案
&&nbspb&=&{}for&i&&in&b;&b[i]&a;&i&not&&if&in&=&1&else:&&&&b[i]&+=&1print&max(b.iteritems(),&key&nbsp:&nbsp
采纳率:38%
来自团队:
为您推荐:
其他类似问题
python的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。这是个NPC问题,所以就用穷举发了,在这里给出了一个用python的itertools的解法,个人认为比较简洁。
import itertools
def funcProduct(a, b):
for c in itertools.permutations(b):
for d in itertools.product(*[list(itertools.permutations(x)) for x in zip(a, c)]):
yield zip(*d)
a = [1,2,3,4]
b = [5,6,700,800]
print min(funcProduct(a,b), key=lambda x:abs(sum(x[0])-sum(x[1])))
论坛回复 /
(30 / 19229)
wjm251 写道jigloo 写道这是个NPC问题,所以就用穷举发了,在这里给出了一个用python的itertools的解法,个人认为比较简洁。
这个NPC有点滥用了吧,你知道他的含义吗
不是很清楚,期待你写个n*n*n或者n*n算法出来,注意:"数组里面的元素个数是相等的。"
可以在多项式时间内解决的判定性问题属于P类问题
可以在多项式时间内验证一个解是否正确的问题称为NP问题。已知P属于NP,目前的困难是P是否等于NP,即NP是否属于P
这类特殊的NP问题就是NP完全问题(NPC问题,C代表complete)。NPC问题存在着一个令人惊讶的性质,即如果一个NPC问题存在多项式时间的算法,则所有的NP问题都可以在多项式时间内求解,即P=NP成立!!这是因为,每一个NPC问题可以在多项式时间内转化成任何一个NP问题。
以上是从网上某篇文章中抄出来的。总结一下,这个问题被大家以多项式时间解决了,如果是NPC,那么大家就证明了N=NP
简单易懂的解决方案(java)
import java.util.*;
public class Main {
public static void main(String args[]) {
Integer a[] = { 1, 2, 3, 4, 5, 11, 12 };
Integer b[] = { 13, 14, 15, 100,100,101,170};
Integer d,v;
List&Integer& c = new ArrayList&Integer&(Arrays.asList(a));
c.addAll(Arrays.asList(b));
Collections.sort(c,new Comparator&Integer&(){
public int compare(Integer a,Integer b) {
return b.compareTo(a);
int i=1,j=1;
a[0] = c.get(0);
b[0] = c.get(1);
d = a[0] - b[0];
for (int k=2; k&c.size() ; k++) {
v = c.get(k);
if (i &= a.length) {
if (j &= b.length) {
if (d & 0) {
System.out.println(Arrays.asList(a).toString());
System.out.println(Arrays.asList(b).toString());
System.out.println("diff=" + d);
楼上V5....
合并,排序
按照合并 排序后我写了个。因为排序算法很多,所以就没写。归并排序应该就可以
public void mergeSort(int[] array1,int[] array2){
* 这里将这两个数组合并排序成一个数组
* 这里就省略
int[] array=new int[array1.length+array2.length];
for(int i=0;i&array1.i++){
array[i]=array1[i];
array[i+array1.length]=array2[i];
System.out.println("合并数组array:");
for(int i:array)
System.out.print(i+"\t");
System.out.println();
sumResolve(array,array1,array2);
private void sumResolve(int[] array,int[] array1,int[] array2){
array1[0]=array[array.length-1];
array2[0]=array[array.length-2];
int array1Sum=array1[0];
int array2Sum=array2[0];
int index1=1;
int index2=1;
for(int i=array.length-3;i&=0;i--){
if(array1Sum&=array2Sum&&index2&array2.length){
array2[index2]=array[i];
array2Sum+=array2[index2];
}else if(index1&array1.length){
array1[index1]=array[i];
array1Sum+=array1[index1];
System.out.println("数组array1:");
for(int j:array1)
System.out.print(j+"\t");
System.out.print("和为:"+array1Sum);
System.out.println();
System.out.println("数组array2:");
for(int j:array2)
System.out.print(j+"\t");
System.out.print("和为:"+array2Sum);
System.out.println();
int[] arr1 = { 1, 2, 3, 4, 5, 11,12 };
int[] arr2 = { 13, 14, 15,100,100,101, 170 };
mergeSort(arr1, arr2);
outoutPut:
合并数组array:
1 2 3 4 5 11 12 13 14 15 100 100 101 170
数组array1:
170 100 5 4 3 2 1 和为:285
数组array2:
101 100 15 14 13 12 11 和为:266
jigloo 写道这是个NPC问题,所以就用穷举发了,在这里给出了一个用python的itertools的解法,个人认为比较简洁。
这个NPC有点滥用了吧,你知道他的含义吗
不是很清楚,期待你写个n*n*n或者n*n算法出来,注意:"数组里面的元素个数是相等的。"
这是个NPC问题,所以就用穷举发了,在这里给出了一个用python的itertools的解法,个人认为比较简洁。
这个NPC有点滥用了吧,你知道他的含义吗
liuningbo 写道Excalibur 写道我觉得你这个应该是n^3,当然如果优化一下求和过程,可以降得到n^2。
你能证明这个算法的正确性吗?
经过哥们提醒,改良了下,对于数组长度为m,n有m*n种交换数组,求其中差值最小的,结果应该是正确的
int[] arr1 = { 1, 2, 3, 4, 5, 100, 101 };
int[] arr2 = { 11, 12, 13, 14, 15,100, 170 };
[100, 1, 2, 3, 4, 100, 101]
311
[5, 11, 12, 13, 14, 15, 170]
240
至少
[1, 2, 3, 4, 5, 100, 170]
285
[11, 12, 13, 14, 15, 100, 101]
266
比代码求出来的效果好
还真是那么回事,兄弟知道哪里缺陷么?这样想到的解决办法就是合并排序再。。。
Excalibur 写道我觉得你这个应该是n^3,当然如果优化一下求和过程,可以降得到n^2。
你能证明这个算法的正确性吗?
经过哥们提醒,改良了下,对于数组长度为m,n有m*n种交换数组,求其中差值最小的,结果应该是正确的
int[] arr1 = { 1, 2, 3, 4, 5, 100, 101 };
int[] arr2 = { 11, 12, 13, 14, 15,100, 170 };
[100, 1, 2, 3, 4, 100, 101]
311
[5, 11, 12, 13, 14, 15, 170]
240
至少
[1, 2, 3, 4, 5, 100, 170]
285
[11, 12, 13, 14, 15, 100, 101]
266
比代码求出来的效果好
我觉得你这个应该是n^3,当然如果优化一下求和过程,可以降得到n^2。
你能证明这个算法的正确性吗?
private int primalMinus=0;
private int sum1=0;
private int sum2=0;
private void
primalMinus(){
for (int i = 0; i & arr1. i++) {
sum1+=arr1[i];
for (int i = 0; i & arr2. i++) {
sum2+=arr2[i];
primalMinus=Math.abs(sum1-sum2);
void exchange(){
primalMinus();//计算最初差值
int index=0;
int len=arr1.
int currMinus=primalM
while(true){
for (int i = 0; i & arr2. i++) {
echangeMatrix(index,i);//交换值
int afterChange=getMinus();
if(currMinus&=afterChange){
currMinus=afterC//一次循环中找到最小minus的
echangeMatrix(index,i);//若不是则不交换,即再换同一位置一次
if(index&=len){
private void echangeMatrix(int index,int des){
int temp=0;
temp=arr1[index];
arr1[index]=arr2[des];
sum1+=arr1[index];
sum2-=arr1[index];
arr2[des]=
sum1-=arr2[des];
sum2+=arr2[des];
primalMinus=Math.abs(sum1-sum2);
* ryuuninbou
int getMinus(){
return primalM
}
经过哥们提醒,改良了下,对于数组长度为m,n有m*n种交换数组,求其中差值最小的,结果应该是正确的
看看写了个 ,实现不需数组长度一致,复杂度O(n^2),求好的算法
&&&
arr1={1,2,3};
* arr2={22,33,44,55};
* 交换两个矩阵数据
void exchange(){
int index=0;
int len=arr1.
int currMinus=getMinus();
while(true){
for (int i = 0; i & arr2. i++) {
echangeMatrix(index,i);//交换值
if(currMinus&getMinus()){
currMinus=getMinus();//一次循环中找到最小minus的
echangeMatrix(index,i);//若不是则不交换,即再换同一位置一次
if(index&=len){
private void echangeMatrix(int index,int des){
int temp=0;
temp=arr1[index];
arr1[index]=arr2[des];
arr2[des]=
* ryuuninbou
int getMinus(){
int sum1=0;
int sum2=0;
for (int i = 0; i & arr1. i++) {
sum1+=arr1[i];
for (int i = 0; i & arr2. i++) {
sum2+=arr2[i];
return Math.abs(sum1-sum2);
我觉得你这个应该是n^3,当然如果优化一下求和过程,可以降得到n^2。
你能证明这个算法的正确性吗?
是一对一交换,不过数组不一定等长吧,
对对,脑子坏了,呵呵
ggzwtj 写道楼主有用过背包算法,就是传说中的小偷想偷东西,但是包包的容量是有限的,拿那些东西才能取得最多的东西。
其实可以换个角度想问题,就可以把楼主的问题转换成背包问题了:
如果想让两个数组的和之差最小,这不就是让两个数组的和都非常接近总和的一半!当然很多情况下是不能是得两个数组的和相等,都等于总和的一半。
如果不想等的话,必然有一个数组的和是小于总和一半的。我们要做的就是怎么让这个小的部分最接近总和的一半。
所以,这个问题应该可以转化成0-1背包问题,而这个包的大小就是所有数总和的一半,最后我们要求的是用一定量的数字怎么把这个包装得最满。
所以,这不是一个NP问题。
ps:如果我对楼主的描述没有理解错的话。:)
这个公式我想不出来,尤其是要考虑包内个数必须为数组的长度 交换的意思应该是两个数组长度一致,1对1交换吧
是一对一交换,不过数组不一定等长吧,
楼主有用过背包算法,就是传说中的小偷想偷东西,但是包包的容量是有限的,拿那些东西才能取得最多的东西。
其实可以换个角度想问题,就可以把楼主的问题转换成背包问题了:
如果想让两个数组的和之差最小,这不就是让两个数组的和都非常接近总和的一半!当然很多情况下是不能是得两个数组的和相等,都等于总和的一半。
如果不想等的话,必然有一个数组的和是小于总和一半的。我们要做的就是怎么让这个小的部分最接近总和的一半。
所以,这个问题应该可以转化成0-1背包问题,而这个包的大小就是所有数总和的一半,最后我们要求的是用一定量的数字怎么把这个包装得最满。
所以,这不是一个NP问题。
ps:如果我对楼主的描述没有理解错的话。:)
这个公式我想不出来,尤其是要考虑包内个数必须为数组的长度 交换的意思应该是两个数组长度一致,1对1交换吧
& 上一页 1
浏览: 2857 次
来自: 北京
看不懂python,
你确认&解决&了吗?楼上的这些& ...
&div class=&quote_title ...
ls的想的太简单了,举个简单的例子,90,1,2,3,4,5, ...
合并,排序。从两端开始取值,各去一半,数组内的值总和相差最小。 ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'

我要回帖

更多关于 php数组打印出来 的文章

 

随机推荐