编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性。例如:1 + 2 + 34 – 5 + 67 – 8 + 9 = 100。

import java.util.ArrayList;

import java.util.List;

/**

 * 1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列, 如:512234、412345等.要求:"4"不能在第三位,"3"与"5"不能相连.

 *

 * @author gnn

 */

public class TryTest {

public static List<String> list = new ArrayList<String>();

public static int num = 8 ;

/**

     * 构造字符串的所有排序组合

     * @param str 将要组合成的字符

     * @param nstr 源字符串集

     */

public static void group(String str, String nstr) {

String temp = "";

addStr(temp, "+");

addStr(temp, "-");

addStr(temp, "o");

}

public static void addStr(String str, String nstr) {

if (num != str.length()) {

String temp = "";

temp = str + nstr;

if (temp.length() == num){

list.add(temp);

}

System.out.println(temp);

addStr(temp, "+");

addStr(temp, "-");

addStr(temp, "o");

}

}

public static void main(String[] args) {

TryTest.group("", "+-o");

System.out.println(list.size());

}

}

import java.util.ArrayList;

import java.util.List;

import java.util.EmptyStackException;

public class MyStack<E extends Object> {

private List<E> pool = new ArrayList<E>();

public MyStack() {

}

public void clear() {

pool.clear();

}

public boolean isEmpty() {

return pool.isEmpty();

}

/**

* 获取栈顶元素

* */

public E getTopObjcet() {

if (isEmpty()) {return null;}

return pool.get(0);

}

/**

* 弹出栈操作

* */

public E pop() {

if (isEmpty()) {throw new EmptyStackException();}

return pool.remove(pool.size() - 1);

}

/**

* 压入栈

* */

public void push(E e) {

//if (isEmpty()) {throw new EmptyStackException();}

pool.add(e);

}

/**

* 获取当前栈大小

* */

public int getStatckSize() {

//if (isEmpty()) {throw new EmptyStackException();}

return pool.size();

}

}

import java.util.ArrayList;

import java.util.List;

public class Question {

private static List<Integer> sumList = new ArrayList<Integer>() ;

public static void main(String[] args) {

TryTest.group("", "+-o");

System.out.println(TryTest.list.size());

new Question().init();

System.out.println(sumList.size());

int max = new Question().sort();

System.out.println("max:"+max);

int min = new Question().getMin();

System.out.println("min:"+min);

}

public void init() {

this.operate();

}

public void operate() {

MyStack<Integer> intStack = new MyStack<Integer>();

MyStack<String> strStack = new MyStack<String>();

for (int i = 0 ; i < TryTest.list.size(); i++) {

intStack.clear();

strStack.clear();

for (int t = 9 ; t > 0 ; t--) {

intStack.push(t);

}

for (int j = TryTest.list.get(i).length() ; j > 0 ; j--) {

strStack.push(TryTest.list.get(i).substring(j-1,j));

}

this.calculate( intStack , strStack);

}

}

public void calculate(MyStack<Integer> intStack, MyStack<String> strStack) {

int size = intStack.getStatckSize();

int strStackSize = strStack.getStatckSize();

/*for (int i = 0; i < size; i++) {

System.out.println(intStack.pop());

}*/

int temp = intStack.pop();

for (int i = 0; i < strStackSize; i++) {

switch (strStack.pop()) {

case "+":

temp+=intStack.pop();

break;

case "-":

temp-=intStack.pop();

break;

case "o":

temp=Integer.parseInt(temp+""+intStack.pop());

break;

default:

break;

}

}

System.out.println(temp);

sumList.add(temp);

}

public int sort(){

int max = sumList.get(0) ;

for (int i = 0; i < sumList.size()-1; i++) {

if(max < sumList.get(i+1)){

max = sumList.get(i+1);

}

}

return max;

}

public int getMin(){

int min = sumList.get(0) ;

for (int i = 0; i < sumList.size()-1; i++) {

if(min > sumList.get(i+1)){

min = sumList.get(i+1);

}

}

return min;

}

}

时间: 2024-11-10 01:34:27

编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性。例如:1 + 2 + 34 – 5 + 67 – 8 + 9 = 100。的相关文章

python练习-生成一个1到50的大字符串每个数字之间有个空格

#-*-encoding:UTF-8-*- string=[] for i in range(1,51): string.append(str(i)) print string#打印一下string print " ".join(string)#用空格拼接列表

【转】 C++易混知识点4: 自己编写一个智能指针(Reference Counting)学习auto_ptr和reference counting

这篇文章建大的介绍了如何编写一个智能指针. 介绍: 什么是智能指针?答案想必大家都知道,智能指针的目的就是更好的管理好内存和动态分配的资源,智能指针是一个智能的指针,顾名思义,他可以帮助我们管理内存.不必担心内存泄露的问题.实际上,智能指针是一个行为类似于指针的类,通过这个类我们来管理动态内存的分配和销毁.方便客户端的使用.相比于一般指针,智能指针主要体现在它使用的容易和便捷性. 转载请注明出处: http://blog.csdn.net/elfprincexu 使用一般指针的问题: 一般情况下

一个能将给定非负整数数组中的数字排列成最大数字的函数

最近在网上看到这样一个题目,自己琢磨了一下. java version "1.8.0_40" // 编写一个能将给定非负整数数组中的数字排列成最大数字的函数. // 例如,给定[50,2,1,9],最大数字为95021. public class Sort { public static void main(String args[]){ int number[] = {1,2,3,32,335,34,7,6,9}; int number1[] = {312,321,3354,222,

编写一个程序找出100~999之间所有的水仙花数

如果一个3位数等于其各位的立方和,称该数为水仙花数. 如,所以407是一个水仙花数,编写一个程序找出100~999之间所有的水仙花数. 1 #include<stdio.h> 2 #include<stdlib.h> 3 //判断水仙花数,是则返回1 4 int isNarcissus(int n); 5 6 int main() 7 { 8 int i; 9 for(i = 100; i < 1000; i++) 10 if(isNarcissus(i)) 11 print

编写一个函数,计算三个数字的大小,按从小到大的顺序输出。

[超简单的三人之间数据交换] 挺像魔术师扔球球,魔术师扔球球,魔术师扔球球,魔术师扔球球,你说像不像~~~~~~~~~~像不像~~~~~~·像不像 1 //编写一个函数,计算三个数字的大小,按从小到大的顺序输出. 2 function order(a,b,c) { 3 var temp; 4 var str; 5 if (a>b) { 6 temp = a ; 7 a = b ; 8 b = temp ; 9 } 10 if (b>c) { 11 temp = b; 12 b = c ; 13

【python】编写一个程序,求100~999之间的所有水仙花数

编写一个程序,求100~999之间的所有水仙花数. 如果一个三位数等于其各位数字的立方和,则称这个数为水仙花数. 例如:153=1^3+5^3+3^3 因此153就是一个水仙花数 代码如下 #水仙花数 for i in range(100, 1000): sum = 0 temp = i while temp: sum = sum + (temp%10)**3 temp //=10 if sum == i: print(i) 原文地址:https://www.cnblogs.com/SiminL

如何用Java编写一个简单的服务器和客户机

今天我要向大家介绍的是自己编写的一个比较简单的服务器和客户机程序,注意一下哦,比较简单.好了,闲话休提,砸门直入主题. 小编先从客户机和服务器的模型开始讲解.简单来说,我们实现的这种模型呢,我们每一个用户称为一个客户机,用户之间的通信之间需要一个中转,所有客户机的通信都依托于这个中转,很明显,这个中转,就是砸门的服务器了.整个模型比较简单明了,那么,接下来我们就直接进入实现阶段. 我们从实现服务器开始.Java提供了这样的一个类,ServerSocket.我们通过实例化它的方式来创建一个服务器.

基于OpenGL编写一个简易的2D渲染框架01——创建窗口

最近正在学习OpenGL,我认为学习的最快方法就是做一个小项目了. 如果对OpenGL感兴趣的话,这里推荐一个很好的学习网站 https://learnopengl-cn.github.io/ 我用的是 vs2013,使用C++语言编写项目.这个小项目叫Simple2D,意味着简易的2D框架.最终的目的是可以渲染几何图形和图片,最后尝试加上一个2D粒子系统和Box2D物理引擎,并编译一个简单的游戏. 第一步,就是创建一个Win32项目. 接下来,生成一个窗口.编写一个RenderWindow类,

java,编写一个从1循环到150并在每行打印一个值,另外在每个3的倍数行上打印出foo,在每个5的倍数行上打印biz,在每个7的倍数上打印baz.

需求:编写一个从1循环到150并在每行打印一个值,另外在每个3的倍数行上打印出foo,在每个5的倍数行上打印biz,在每个7的倍数上打印baz. package study01; public class For { public static void main(String[] args) { for(int i = 1;i<=150;i++){ System.out.print(i); if(i%3==0){ System.out.print(" foo"); } if(i