最近一段时间代码汇总

一,求解幸运数

给定一个十进制的数,它的若干位之和等于二进制形式的各个位之和,则它就是幸运数。

比如十进制数123,各个位之和为6;比如十进制数3,各个位之和为3,二进制表示为 011,各个二进制位之和为2 ,这两个和不相等,故十进制数3不是幸运数。

下面程序实现了,给定一个数 num,求 1,2,3,....num 之间的所有的幸运数。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNextInt())
        {
            int count = sc.nextInt();
            int[] values = new int[count];
            for(int i = 0; i < count; i++)
            {
                values[i] = sc.nextInt();

            }
            for(int i = 0; i < count; i++)
            {
                int res = luckNumbers(values[i]);
                if(res > 0)
                System.out.println(res);
            }
        }
        sc.close();
    }

    private static int luckNumbers(int value){
        int count = 0;
        for(int i = 1; i <= value; i++)
        {
            int ten = process(i);
            int binary = process2(i);
            if(ten == binary)
                count++;
        }
        return count;
    }

    private static int process(int value)
    {
        int sum = 0;
        while(value > 0)
        {
            sum += value % 10;
            value = value/10;
        }
        return sum;
    }

    private static int process2(int num){
        int count = 0;
        for(; num > 0; count++)
        {
            num &= (num - 1);
        }
        return count;
    }
}

二,第一行

import java.util.Arrays;
import java.util.Scanner;  

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        while(sc.hasNextLine())
        {
            String line = sc.nextLine();
            int tables = Integer.valueOf(line.split(" ")[0]);
            int customers = Integer.valueOf(line.split(" ")[1]);

            int[] cap = new int[tables];
            line = sc.nextLine();
            String lines[] = line.split(" ");
            for(int i = 0; i < cap.length; i++)
                cap[i] = Integer.valueOf(lines[i]);

            Buy[] buyarr = new Buy[customers];
            for(int i = 0; i < customers; i++)
            {
                line = sc.nextLine();
                int numbers = Integer.valueOf(line.split(" ")[0]);
                int money = Integer.valueOf(line.split(" ")[1]);
                buyarr[i] = new Buy(money, numbers);
            }
            Arrays.sort(cap);
            Arrays.sort(buyarr);
            int count = 0;
            for(int i = 0; i < customers; i++)
            {
                int numbers = buyarr[i].numbers;
                int money = buyarr[i].money;
                int j = 0;
                boolean find = false;
                for(; j < cap.length; j++)
                    if(numbers < cap[j])
                    {
                        cap[j] = 0;
                        find = true;
                        break;
                    }
                if(find == true){
                    count += money;
                }
            }
            System.out.println(count);
        }
    }

    private static class Buy implements Comparable<Buy>{
        int money;
        int numbers;

        public Buy(int money, int numbers) {
            this.money = money;
            this.numbers = numbers;
        }

        @Override
        public int compareTo(Buy o) {
            return o.money - this.money;//按money从大到小排序
        }
    }
}

三,使用两个线程,交替打印 1-10。线程A打印奇数,线程B打印偶数

public class Test{
    public static void main(String[] args) {
        Print p = new Print();
        Thread t1 = new ThreadA(p);//负责打印奇数
        Thread t2 = new ThreadB(p);//负责打印偶数

        t2.start();
        try {
            Thread.sleep(100);//让当前线程睡一会儿,好让t2能够 start
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        t1.start();//t2 start之后,才启动t1
    }
}

class Print{
    private volatile boolean isA = false;
    public synchronized void printOdd(int i){
        try{
            while(i <= 9)
            {
                while(isA == true)
                    wait();
                System.out.print(i);
                notifyAll();//让t2先启动,由于 isA初始为false,t2会wait,这样 t1获得锁打印了1之后,nofityAll发的通知才不会丢失
                i+=2;
                isA = true;
            }
        }catch(InterruptedException e){
            e.printStackTrace();
        }

    }
    public synchronized void print(int i){
        try{
            while(i <= 10)
            {
                while(isA == false)
                    wait();
                System.out.print(i);
                i+=2;
                notifyAll();
                isA = false;
            }
        }catch(InterruptedException e){
            e.printStackTrace();
        }
    }
}

class ThreadB extends Thread{
    Print p;

    public ThreadB(Print p) {
        this.p = p;
    }

    @Override
    public void run() {
        p.print(2);
    }
}

class ThreadA extends Thread{
    Print p;

    public ThreadA(Print p) {
        this.p = p;
    }

    @Override
    public void run() {
        p.printOdd(1);
    }
}
时间: 2024-11-05 19:41:55

最近一段时间代码汇总的相关文章

c#实现每隔一段时间执行代码(多线程)

总结以下三种方法,实现c#每隔一段时间执行代码: 方法一:调用线程执行方法,在方法中实现死循环,每个循环Sleep设定时间: 方法二:使用System.Timers.Timer类: 方法三:使用System.Threading.Timer: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46

专访黄勇:Java在未来的很长一段时间仍是主流(把老板当情人,把同事当小孩,把客户当病人)

url:http://www.csdn.net/article/2015-09-06/2825621 2015-09-06 13:18 摘要:本文采访了现任阿里巴巴公司系统架构师黄勇,从事近十年的JavaEE应用开发工作.采访内容包含了技术人生.IT职场.程序员.Java Web框架.研发管理.敏捷开发.开源等问题,希望你在技术这条路上不孤单. [编者按] 一个普通的技术人讲述不平凡的技术人生路.黄勇,在工作十年后,写了一本书:<架构探险——从零开始写Java Web框架>,这本书是给他十年技

这段时间

貌似很长一段时间没怎么更新了,其实也是最近一直在搞一些东西. 应该是从14号开始写的吧,不知为何想写出一个最全的网络流的建模汇总出来,然后就真的拿着以前写过的一些上不了台面的总结开始改改改,加加加.然后做题轨迹差不多是这个样子: 好长时间都没怎么写过题...然后觉得一切都写得差不多了之后就老老实实刷了两天题.然后就有了这个效果: 最上面那个是有上下界的网络流,还没来得及学.下面那个是定义裸题.. 然后发现是在是没有什么题(其实是懒得写了)能继续做了.就有了这篇文章. 其实回想起来看看,这几天的收

为QNetworkAccessManager添加超时提醒(自己记录一段时间里的下载字节数,用定时器去定期检测,从而判断是否超时)

在做更新,在测试异常的时候,在下载过程中,发现如果直接系统禁用了网络,会报错误,可以捕获.但是如果是第三方软件限制程序联网,问题来了. 程序会一直在那里等待,没有异常,也不发送QNetworkAccessManager::finsh和QNetworkReply::error和QNetworkReply::finsh信号. 所以动念头为下载加个超时,但是QNetworkAccessManager,QNetworkReply和QNetworkRequest都没有相关的设置函数.其实仔细想一下,也没有

快到这段时间的终点了。。。

总结一下自己最近的问题. (1)生活 比较懒散,学习了一段时间前端以后,渐渐忘记了实际上是一个写C++的.应该有时间的时候,写点C++的代码,试着解决一些复杂一点算法, 应该向——向总学习,最近一个月搞定了2个机器学习的算法,额,惭愧,应该花点时间撸一撸算法的.最近还是过的太懒散了. (2)学习的惯性应该保持,时刻保持一颗学习的心,这个行业大部分都是平庸的人.只有极少数才是行业领袖,业界精英.所以,能坚持到最后的,都有机会 成为行业精英,所以,最好比的是时间,因为除了极少数的天才,大部分都是靠时

搞了一段时间iOS开发的感受

接触iOS有了一小段的时间了,属于半路出家,之前只是对C和数据结构有一些了解并不深入,Objective-C算是第一门较为深入的了解吧,知道自己在各个方面都差的很远,需要学习的东西很多很多. 第一个阶段就是基础的学习,熟悉UIFoundation和UIKit的基础框架,能自己写些简单的app,花了几个月的时间.掌握了这部分的基础知识后,开始在公司做项目,开始看写app发现自己好多实现都无从下手,当然还有很多看不到的地方,于是就开始看一些code4app和github上的代码,先看example,

关于ScheduledExecutorService执行一段时间之后就不执行的问题

问题背景 最近写了个程序,程序中使用到了ScheduledExecutorService的scheduleAtFixedRate方法,用于定时执行任务,但是发现程序运行一段时间之后定时任务不执行了,查看日志和perfcounter都没有看到任何异常,比较郁闷.最后看了一下JDK的源码,在源码的Java doc中的发现了如下一句话: If any execution of the task encounters an exception, subsequent executions are sup

这一段时间的学习心得

这一段时间我在一家培训机构接受培训,这里很有名,很多IT人士都想进来这里进修,我也一样如愿以偿的来到这里.刚开始的时间我很努力,每天过的都很充实---敲代码.感觉这样的日子特别好.每天都会讲好多的内容,渐渐地我开始吃不消了,有点跟不上的进度.但还是会很努力的学习. 我们刚开始是学的基础加强,数据库,ADO.NET,三层,ASP.NET,但是在后面的日子里我开始变得懒惰消极,不爱学习,每天很少敲代码,我也不知道是怎么了,就是不想学习,现在拉下了很多的课程,心里也是很着急我也不想这样的,但是就是不想

松口气,近一段时间的工作学习情况

公司的工作最近又小松口气,其实剩下的事情还不少,但是框架已经成型,接下来硬骨头还有很多,但是吃一个就少一个,这就不太怕了. 去年开始做这套类似Blue Print的图脚本的时候没想到虚幻能这么快就开放,项目推行类Blue Print时也就没有太激进,图本身的出发点是自然语言,而不是程序语言,带有不少Coroutine的概念,结果现在就有点被动了.自己做出的图表系统无论怎么看,从组织上和方便程度上都不能跟UE4相提并论,所以--现在压力略大. 不过坚持到最后能实施成这样子,而且得到了部分策划的支持