杂
Carmelo_Z
这个作者很懒,什么都没留下…
展开
-
关于#ifdef 标识符(转自@jennyvenus)
一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。条件编译命令有以下几种形式:#ifdef 标识符程序段1#else程序段2#endif它的作用是:当标识符已经被定义过(一般是用#d转载 2016-03-05 21:14:17 · 519 阅读 · 0 评论 -
区间K大数查询
/*问题描述:给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个。输入格式:第一行包含一个数n,表示序列长度。第二行包含n个正整数,表示给定的序列。第三个包含一个正整数m,表示询问个数。接下来m行,每行三个数l,r,K,表示询问序列从左往右第l个数到第r个数中,从大往小第K大的数是哪个。序列元素从1开始标号。输出格式:总共输出m行,每行一个数,表示询问的答案。样例原创 2016-10-23 15:24:06 · 427 阅读 · 0 评论 -
回文数
/*问题描述: 123321是一个非常特殊的数,它从左边读和从右边读是一样的。输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。输入格式: 输入一行,包含一个正整数n。输出格式: 按从小到大的顺序输出满足条件的整数,每个整数占一行。样例输入: 52样例输出: 899998989989998899*/#include int main(原创 2016-10-23 15:22:24 · 392 阅读 · 0 评论 -
查找整数
/*问题描述:给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。输入格式:第一行包含一个整数n。第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。第三行包含一个整数a,为待查找的数。输出格式:如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。 */#include int main(){ int a[10原创 2016-10-23 15:12:47 · 300 阅读 · 0 评论 -
死锁&活锁&饥饿
1.活锁指的是任务或者执行者没有被阻塞,由于某些条件没有满足,导致一直重复尝试,失败,尝试,失败。2.活锁和死锁的区别在于,处于活锁的实体是在不断的改变状态,所谓的“活”, 而处于死锁的实体表现为等待;活锁有可能自行解开,死锁则不能。3.活锁可以认为是一种特殊的饥饿。 下面这个例子在有的文章里面认为是活锁。实际上这只是一种饥饿。因为没有体现出“活”的特点。 假设事务T2再不原创 2017-04-25 20:42:21 · 919 阅读 · 0 评论 -
递归求解排列组合A(n,3)
这里是求解A(n, 3),在代码里面可以修改递归出口的条件if(k == 2),把2改成别的数来解决,当k=n时,就是全排列了:public class Test { //递归求出排列组合A(n, 3) private void recurse(int k, ArrayList mp, ArrayList> allList, ArrayList list, HashSet alre原创 2017-07-22 16:38:04 · 608 阅读 · 0 评论 -
递归求解C(n,m)
public class Temp { //递归求解组合数C(n,m),将组合结果放到allList中 private static void recurse(int k, int n, int m, List> allList, List nowList){ //k代表当前组合到了第几个数 List newNowList = new ArrayList<>(nowList);原创 2017-08-21 00:23:38 · 917 阅读 · 0 评论 -
堆棋子问题
小易将n个棋子摆放在一张无限大的棋盘上。第i个棋子放在第x[i]行y[i]列。同一个格子允许放置多个棋子。每一次操作小易可以把一个棋子拿起并将其移动到原格子的上、下、左、右的任意一个格子中。小易想知道要让棋盘上出现有一个格子中至少有i(1 ≤ i ≤ n)个棋子所需要的最少操作次数.输入描述:输入包括三行,第一行一个整数n(1 ≤ n ≤ 50),表示棋子的个数第二行为n个棋子的横坐原创 2017-08-21 17:06:36 · 526 阅读 · 0 评论 -
疯狂队列问题
小易老师是非常严厉的,它会要求所有学生在进入教室前都排成一列,并且他要求学生按照身高不递减的顺序排列。有一次,n个学生在列队的时候,小易老师正好去卫生间了。学生们终于有机会反击了,于是学生们决定来一次疯狂的队列,他们定义一个队列的疯狂值为每对相邻排列学生身高差的绝对值总和。由于按照身高顺序排列的队列的疯狂值是最小的,他们当然决定按照疯狂值最大的顺序来进行列队。现在给出n个学生的身高,请计算出这些学原创 2017-08-21 23:42:00 · 362 阅读 · 0 评论 -
根据先根序列创建二叉树
//根据先根序列来创建一棵二叉树,list中空结点用null表示private TreeNode createTree(List list){ if(list.isEmpty()){//这样想递归出口,若一开始list为空,那当然就是空子树了,递归要从宏观 return null; } TreeNode out = list.remove(0); TreeNode root = nu原创 2017-08-22 15:57:11 · 3849 阅读 · 0 评论 -
通过文件选择框获取指定的目录路径
JFileChooser jfc = new JFileChooser("D:\\"); jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); //jfc.setName("请选择要将图片保存到的位置"); int returnVal = jfc.showOpenDialog(jfc); if(returnVal == J原创 2017-11-19 21:35:00 · 1306 阅读 · 0 评论 -
输出图形
. . $ $ $ $ $ . .. . $ . . . $ . .$ $ $ . $ . $ $ $$ . . . $ . . . $$ . $ $ $ $ $ . $$ . . . $ . . . $$ $ $ . $ . $ $ $. . $ . . . $ . .. . $ $ $ $ $ . .. . $ $ $ $ $ $ $ $ $ . .. . $ . .原创 2016-10-23 15:27:45 · 452 阅读 · 0 评论 -
零散
C++控制输出位数#include cout不同进制间的相互转换(算法)十六进制转化为十进制:如FFFF→65535从右至左:F→15F:15*1(16的0次幂)=15F:15*16(16的1次幂)=240F:15*256(16的2次幂)=3840F:15*4096(16的3次幂)=6144015+240+3840+61440=65535故得:F原创 2016-10-23 15:11:50 · 295 阅读 · 0 评论 -
找最大值,最小值,累加
#include //找最大值,最小值,累加 int main(){ int a[10000],n,i,max,min,sum=0; scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&a[i]); max=min=a[0];//不要max=min=0什么的,赋给max,min的初值一定要是这个数组里的成员!!! for(i=0;i<n;i原创 2016-10-23 15:30:17 · 435 阅读 · 0 评论 -
字母图形
/*问题描述利用字母可以组成一些美丽的图形,下面给出了一个例子:ABCDEFGBABCDEFCBABCDEDCBABCDEDCBABC这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。*/#include //提示:字母的序号与两个坐标的差的绝对值有关#include int main(){ int i,j,m,n; char a[26][26];原创 2016-10-23 15:29:39 · 291 阅读 · 0 评论 -
素数判断
#include using namespace std;bool IsPrime(int x){ bool flag = true ; int i; for(i = 2 ; i < x; i++){//不能把(x%i==0)放到for循环的判断条件中,当进不去循环也不会执行循环体,i也不会递增了!!! if(x % i == 0 ){ flag = false; re原创 2016-10-23 15:28:25 · 292 阅读 · 0 评论 -
十六进制转十进制
/*问题描述:从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。样例输入:FFFF样例输出:65535*/#include #include int main(){ char str[8]; int a[8]; scanf("%s",&str); int count原创 2016-10-23 15:26:57 · 723 阅读 · 0 评论 -
十六进制转八进制
/*问题描述:给定n个十六进制正整数,输出它们对应的八进制数。输入格式:输入的第一行为一个正整数n (1<=n<=10)。接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。输出格式:输出n行,每行为输入对应的八进制正整数。【注意】输入的十六进制数不会有前导0,比如012A。输出的八进制数也不能有前导0。原创 2016-10-23 15:26:17 · 599 阅读 · 0 评论 -
十进制转十六进制
/*问题描述: 十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。 给出一个非负整数,将它表示成十六进制的形式。输入格式:原创 2016-10-23 15:24:59 · 709 阅读 · 0 评论 -
冒泡算法排序
/*问题描述:给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200输入格式:第一行为一个整数n。第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。输出格式:输出一行,按从小到大的顺序输出排序后的数列。样例输入:58 3 6 4 9样例输出:3 4 6 8 9*/#include int main(){ int a[201],n,原创 2016-10-23 15:23:07 · 391 阅读 · 0 评论 -
翻转矩阵
#include using namespace std;int main(){ int arr[5][5]; int M,N,T,i,j,t;//该申明的变量勿忘 cin>>M>>N>>T; for(i=0;i<M;i++) for(j=0;j<N;j++) cin>>arr[i][j]; if(T==0)//原创 2016-10-23 15:14:43 · 671 阅读 · 0 评论 -
大数加法
#include #include using namespace std;int max(int &x , int &y){ if(x>y){ return x; } else{ return y; }}int min(int &x , int &y){ if(x<y){ return x; } else{ return y; }}int mai原创 2016-10-23 15:13:24 · 300 阅读 · 0 评论 -
01字串
/*问题描述对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:0000000001000100001100100请按从小到大的顺序输出这32种01串。*/#include //提示:使用五重循环int main(){ int a,b,c,d,e; for(a=0;a<2;a++) for(b=0;b<2;b++) for(c=0原创 2016-10-23 15:08:15 · 402 阅读 · 0 评论 -
选择文件与获取选中文件绝对路径
public static void main(String[] args) { JFrame frame = new JFrame(); JButton button = new JButton("上传"); frame.add(button); frame.setVisible(true); button.addActionListener(new ActionListen转载 2017-11-19 21:43:17 · 2931 阅读 · 0 评论