免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4351 | 回复: 2
打印 上一主题 下一主题

【求助】关于数组取值问题 [复制链接]

论坛徽章:
1
CU十二周年纪念徽章
日期:2013-10-24 15:41:34
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-07-21 09:04 |只看该作者 |倒序浏览
求各位大神帮忙提供个思路,有代码更好,小弟万分感谢~

需求:

有一个数组,其内值如:[1,2,2,1,1,2,1,1,1,2,2,1,1,2,2....]  其内仅有1和2两个数,

我想从数组取出和等于4的所有组合,并打印输出,将不能组合为和4的所有数据选择出来,放到一个数组中返回


这个需求该怎么做呀?一直没想出来。。。

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
2 [报告]
发表于 2015-08-12 11:16 |只看该作者
不明白楼主意思。2+1+1=4,2+2=4,1+1+1+1=4,你的数据基本都能加到4啊。

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
3 [报告]
发表于 2015-08-12 11:44 |只看该作者
  1. /**
  2. *
  3. */
  4. package demo;

  5. import java.util.ArrayList;

  6. /**
  7. * @author renxiao2003
  8. *
  9. */
  10. public class Demo {

  11.         private static int[] arr = { 1, 2, 2, 1, 1, 2, 1, 1, 1, 2, 2, 1, 1, 2, 2 };
  12.         private static int sum = 4;
  13.         private static ArrayList<ArrayInfo> oldValueInfos = new ArrayList<ArrayInfo>();

  14.         /**
  15.          * @param args
  16.          */
  17.         public static void main(String[] args) {
  18.                 // TODO Auto-generated method stub
  19.                 for (int i = 0; i < arr.length; i++) {
  20.                         int next = i + 1;
  21.                         int temp = arr[i] + arr[next];
  22.                         while (true) {
  23.                                 if (temp == sum) {
  24.                                         i = next;
  25.                                         break;
  26.                                 } else if (temp < sum) {
  27.                                         next = next + 1;
  28.                                         temp = temp + arr[next];
  29.                                 } else {
  30.                                         for (int j = i; j < (next + 1); j++) {
  31.                                                 ArrayInfo arrayInfo = new ArrayInfo();
  32.                                                 arrayInfo.setOldPosition(j);
  33.                                                 arrayInfo.setValue(arr[j]);
  34.                                                 oldValueInfos.add(arrayInfo);
  35.                                         }
  36.                                         i = next;
  37.                                         break;
  38.                                 }
  39.                         }
  40.                 }

  41.                 System.out.println("数组下标从0开始输出");
  42.                 for (ArrayInfo arrayInfo : oldValueInfos) {
  43.                         System.out.println("Position = " + arrayInfo.getOldPosition()
  44.                                         + ";Value = " + arrayInfo.getValue());
  45.                 }
  46.         }

  47. }

  48. class ArrayInfo {
  49.         private int oldPosition;
  50.         private int value;

  51.         public int getOldPosition() {
  52.                 return oldPosition;
  53.         }

  54.         public void setOldPosition(int oldPosition) {
  55.                 this.oldPosition = oldPosition;
  56.         }

  57.         public int getValue() {
  58.                 return value;
  59.         }

  60.         public void setValue(int value) {
  61.                 this.value = value;
  62.         }
  63. }
复制代码
看看是你想要的不。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP