从数组中取3个数全排列

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class comb {

    public static void main(String[] args) {

        //全排列  n from m
        //int c[]={3,94,100,8,5,7,12,6};
        int c[]={3,94,100,6};
        List<int []> total=new ArrayList<int []>();

        int s=3;

        for(int i=0;i<c.length;i++){

            int tmp[]=  new int[s];
            //第一个位置
            tmp[0]=c[i];

            for(int k=0;k<c.length;k++){
                //第二个位置
                if(tmp[0]==c[k]) {continue;}else{ tmp[1]=c[k]; }

                for(int j=0;j<c.length;j++){

                    if(c[j]==tmp[0]||c[j]==tmp[1]){    continue;}else
                    {
                        //第三个位置
                        tmp[2]=c[j];
                    }

                    int t[]=  new int[s];
                    t[0]=tmp[0];
                    t[1]=tmp[1];
                    t[2]=tmp[2];
                    //排序
                    Arrays.sort(t);
                    System.out.println(tmp[0]+" "+tmp[1]+" "+tmp[2]);
                    total.add(t);
                }
            }

        } 

        // 过滤重复
          Set ss=new HashSet(total);
          List<int []> xxx=new ArrayList<int []>(ss); 

    }
时间: 2024-11-08 20:20:54

从数组中取3个数全排列的相关文章

bestcoder#43 1002 在数组中找两个数的和取模的最大值 二分

bestcoder#43 1002 在数组中找两个数的和取模的最大值  二分 pog loves szh II Accepts: 97 Submissions: 834 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem Description Pog and Szh are playing games. There is a sequence with n number

统计数组中重复元素个数

/** * 循环统计数组或集合中的重复元素个数 * @param args */ public static void main(String[] args) { Map<String, Integer> map = new HashMap<String, Integer>(); String[] ss = {"白","黑","绿","白"}; for (int i = 0; i < ss.len

1146: 零起点学算法53——数组中插入一个数

1146: 零起点学算法53--数组中插入一个数 Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lldSubmitted: 1749  Accepted: 613[Submit][Status][Web Board] Description 给定有序数组(从小到大),再给你一个数,要求插入该数到数组中并保持顺序 Input 多组测试,每组第一行输入一个整数n,然后是n个有序的整数 第二行输入1个整数m和1个整数K Outpu

输入一个有序数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字

输入一个有序数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字.如果有多对数字的和等于输入的数字,输出任意一对即可.例如输入数组1.2.4.7.11.15和数字15.由于4+11=15,因此输出4和11. 1 #include<stdio.h> 2 #include<stdlib.h> 3 4 void findTwo(int *array, int len, int sum) 5 { 6 int beg = 0; 7 int end = len-1; 8 int

在二维有序数组中搜索某个数(存在否、出现次数)

在二维有序数组中搜索某个数(存在否.出现次数) 问题描述 写出一个高效的算法来搜索m×n矩阵中的值,返回这个值出现的次数. 这个矩阵具有以下特性: 每行中的整数从左到右是排序的. 每一列的整数从上到下是排序的. 在每一行或每一列中没有重复的整数. 样例 考虑下列矩阵: [ [1, 3, 5, 7], [2, 4, 7, 8], [3, 5, 9, 10] ] 给出target = 3,返回 2 实现思路 由于数组每行从左到右是有序的,每列从上到下是有序的,因此可以考虑从二维数组的右上角开始搜索.

14.输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字。 要求时间复杂度是O(n)

待完善! 转载请注明出处:http://www.cnblogs.com/wuzetiandaren/p/4259199.html 声明:现大部分文章为寻找问题时在网上相互转载,此博是为自己做个记录记录,方便自己也方便有类似问题的朋友,本文的思想也许有所借鉴,但源码均为本人实现,如有侵权,请发邮件表明文章和原出处地址,我一定在文章中注明.谢谢. 题目: 输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字.要求时间复杂度是O(n).如果有多对数字的和等于输

求数组中任意两个数之间所有数字的和

303. Range Sum Query - Immutable   求数组中任意两个数之间所有数字的和 QuestionEditorial Solution My Submissions Total Accepted: 37248 Total Submissions: 146945 Difficulty: Easy Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j),

输入一个已经按升序排序的数组和一个数字 ,在数组中查找两个数,使得他们的和是输入的那个数字

package shuzu; /* * 输入一个已经按升序排序的数组和一个数字 * 在数组中查找两个数,使得他们的和是输入的那个数字,要求时间复杂度为o(n) * 如果有多对数字的和等于输入的数字,输出任意一对即可. */ public class demo1 { private static void findAns(int[] data,int sum) { int size=data.length; int begin =0; int end=size-1; while(begin < s

75 int类型数组中除了一个数出现一次或两次以外,其他数都出现三次,求这个数。

[本文链接] http://www.cnblogs.com/hellogiser/p/single-number-of-array-with-other-three-times.html [题目] int类型数组中除了一个数出现一次或两次以外,其他数都出现三次,求这个数. [分析] C++ Code 123456789101112   int singleNumber(int *a, int n) {     int ones = 0, twos = 0;     for (int i = 0;