- 博客(63)
- 收藏
- 关注
原创 java 实现扫雷算法
小时候接触扫雷,完了好久都没有弄明白,最近再次接触扫雷才明白了玩法。 规则:找出一定数量的雷整个游戏才会结束。点击方格,是数字n的话,就表明这个方格的周围8个方格中一共有n个雷。算法: (1)假设一局中有10个雷,方格大小是n*m,用数组map[n][m]表示就可以了,map[i][j] (0 (2) 随机生成10个雷,并且每次生成一个雷,给这个
2013-12-10 22:13:29
5159
原创 安卓游戏 实现飘雪花的界面
前几天,有看到一个手机游戏中一飘雪花的场景,感觉很漂亮。今天也想实现一下。 首先要找一副雪花png图。关键的地方: (1)在程序中显示的雪花大小有3种,其实都是同一张图片,在程序中改大小就可以了。 (2) 游戏中的一个雪花 就是一个类,这个类有雪花的坐标,原始的坐标(为了重新赋值用),图片的id号,速度的
2013-12-10 21:37:15
1284
原创 java 实现 连连看的算法
前几天要写一程序 连连看 。上网查了很多。总结一下。算法大致分为2种。(1) 图的广度搜索算法(这边就不讲了) (2)当连接两张图片的线条拐点不超过 2个的时候,此时分为3种情况。没有拐点,只有一个拐点,有两个拐点。 我们可以把连连看中的图片坐标看做是一个2维坐标,就用(x,y)坐标。红色的字体就是放图片的位置。黑色的就相当于那个边框。 (1)当
2013-08-21 01:18:01
2741
原创 自己写的安卓程序如何改变图标
在程序中使用自己的图标,其实很简单 。第一步 :最好将自定义的图标 大小控制在48dp左右第二部:打开工程文件 夹bin未剪辑啊下的res 文件夹 把带有“ic_launcher.png” 的图片改成自己的图片,我是把3个drawable文件夹下的ic_laucher.png 全替换。还有文件夹下res的也一样 。第三步:运行程序在手机上显示的就是自己的定义的图标
2013-08-05 14:46:13
910
转载 java swt 中的悬浮框
这次写的小程序中要使用悬浮框。网上关于swt的资料很少。最后和同学讨论了半天,决定使用java swing awt的JWindow 来做。由于那个悬浮框是根据鼠标的坐标来改变位置的。所以你获取鼠标坐标的时候要获取在整个屏幕中的位置,因为你的主框有可能会移动下边的代码是写的一个悬浮框的类package testJwindow;import java.awt.Color;import
2013-06-23 10:42:12
4113
原创 求某属性集的函数依赖集的闭包运算
闲的没事干,看了看数据库的求闭包的。顺便将代码页实现了。如果有错请指出。#include#include#include#include#include#define ELE 26 //U 属性集合 最多为26个#define R 50 //输入的F的函数依赖集的元素个数最多为50 个using namespace std;int ma
2013-06-16 22:09:45
2503
原创 关于单词游戏软件的单词存库问题
闲的没事干,就和同学组合写一单词软件。项目还在继续,首先是下载个年级的单词,然后入库。由于下载的单词格式不一样,最后将所下载的4个年级的单词格式统一一下,只存储英文,中文,毕竟刚开始做做的就比较简单。重点就是讲整理好的txt导入mysql中的时候,列和列之间的间隔符号要一致,即使是空格,数量也是一样的。 现在说说我们存库的过程。 (1) 由于文件是
2013-06-09 01:16:17
856
原创 java 对一单词的找出全部组合
单词必须是英文字母组成的,而且单词的字母不能重复。因为使用的是bitset记录的组合。刚刚写完之后,突然想到,也可以对算法进行改改,直接能求出字母重复的。用 char ch[len]=“*******”(刚开始的组合), int match[len]=.{0,1.2.。。。。。len-1}记录组合ch每个单词的下标,然后用字典排序法对0,1.。。len-1这几个数进行排列,每一个排列就是一次
2013-06-08 01:31:54
1431
原创 acm 2084
刚开始还不会,找找答案,原来是动态规划的问题。#include#include#includeusing namespace std;int main(){int t,high,map[101][101],i,j;cin>>t;while(t--){ cin>>high;memset(map,0,sizeof(map));for(i=1;i
2013-06-02 19:48:03
575
原创 acm 2074
提交了很多遍才过得,原来用这种方法,当输入是1 的时候就是错的,所以1要特殊处理 #include#includeint main(){char map[81][81],a[2],b[2];int flag=0,num,i,j,k;char c;while(scanf("%d%s%s",&num,b,a)==3){if(!flag) ++flag;
2013-06-01 16:20:27
797
原创 acm 2087
刚开始做这道题,就是用穷举法,没过,然后改成kmp算法,竟然过了。 #include#includeusing namespace std;void _next(string pStr,int *next){ int k=-1,j=0,len=pStr.length(); next[0]=-1; while(j { if(k==-
2013-06-01 14:06:48
556
原创 acm 2053
这道题结果至于第n盏灯有关,所以计算的时候其他灯的状态不用管 #include#includeint main(){int lap[100005],i,j,n,k;while(scanf("%d",&n)!=EOF){ memset(lap,0,sizeof(lap)); for(i=1;i { if(n%i==0) lap[n
2013-05-31 23:10:19
600
原创 acm 2076
右边是double型的数值,而左边有整数时,给整数*1.0.i#include#includeint main(){int t,h,m,s,i,j;double dh,dm,ans;scanf("%d",&t);for(i=0;i{dh=0.0; dm=0.0;scanf("%d%d%d",&h,&m,&s);if(h>=12)h-=12;
2013-05-30 11:03:22
580
原创 acm 2096
#includeint main(){int i,n;_int64 j,t;scanf("%d",&n);for(i=0;i{ scanf("%I64d%I64d",&j,&t);printf("%I64d\n",(j+t)%100);}return 0;}
2013-05-29 23:38:42
647
原创 acm 2044
这道题和2041一样都是呀使用动态规划,地推来做,不过要注意的是,数组要设置很大的值才可以,这个是最终要的 #include#includeint main(){int i,j,n,a,b;_int64 step[50]={0};memset(step,0,sizeof(step));step[1]=1;for(i=1;i{ if(i+1 st
2013-05-29 23:27:36
594
原创 acm 2041
这个题的原理是动态规划,1地推回去就可以了#include#includeint main(){int a[41]={0,1},i,j,n;a[1]=1;memset(a,0,sizeof(a));a[0]=0;a[1]=1;for(i=1;i{ if(i+1 a[i+1]+=a[i];if(i+2 a[i+2]+=a[i
2013-05-29 22:55:21
544
原创 acm 2039
#include#includeint main(){int i,n;float a[3]; //说的是正数,没有说是整数scanf("%d",&n);for(i=0;i{scanf("%f%f%f",&a[0],&a[1],&a[2]);if((a[0]+a[1]>a[2])&&(a[2]+a[1]>a[0])&&(a[2]+a[0]>a[1])
2013-05-29 22:00:06
589
原创 acm 2031
#include#includeint main(){ int ans[100];int j,i,mark,n,m; while(scanf("%d%d",&n,&m)!=EOF){mark=1;if(n{mark=-1;n=abs(n);printf("-");}j=0;while(n){ ans[j++]=n%m;
2013-05-29 21:20:09
586
原创 acm 2048
这道题的关键是种类数很大,数组要用longlong #includeint main(){ _int64 a[21][2]={{0,0},{1,0},{2,1}}; int i,j,C,sum;for(i=3;i{ a[i][0]=i*a[i-1][0];a[i][1]=(i-1)*(a[i-1][1]+a[i-2][1]);}scanf("%d",&C
2013-05-29 21:04:05
728
原创 组合 排列
上课学习了一点组合数学的知识,现在总结一下。根据一下几类可以,可以将组合问题大致分为4类:(1)对象可不可以区分 (2)对象不可不以重复的取 (3)对象的先后取顺序会影响结果吗。 没有重复的选取:(1)排列 A(m,n)= m!/(m-n)!表示从m个对象中选出n个进行排列 (2)组合C(m,n) =m!/
2013-05-29 11:12:42
634
转载 ACM 2057
http://blog.sina.com.cn/s/blog_69fc13c50100lfoq.html#include using namespace std;int main() { __int64 a,b; while(scanf("%I64X %I64X",&a,&b)!=EOF) { if(a+b printf("-%I64X\n",-a-b);
2013-05-28 23:04:23
563
原创 acm 2035
已经经过oj验证的 #includeint main(){ int n,m,i,num; while(scanf("%d%d",&a,&b)!=EOF&&(m||n)) { num=n%1000; for(i=1;i num=num*a%1000; printf("%d\n",num); } return 0;}
2013-05-28 19:08:24
598
原创 acm 2034
这个题关键是最后结果的输出时,每个元素后边有一空格 #include#include#includeint cmp(const void *a,const void *b){ return *((int *)a)-*((int *)b);}void main(){ int a[102],b[102],c[102],x[102];int i,j
2013-05-27 23:16:49
551
原创 acm 2023
最后的输出要输出2个空格#include#includevoid main(){ double ave[6]={0.0}; int i,j,n,m,num,sum,flag;int grade[52][6];while(scanf("%d%d",&n,&m)!=EOF){ num=0;memset(ave,0,sizeof(ave));mem
2013-05-25 22:54:23
593
原创 acm 2081
#include#includevoid main(){ int n,i,j; char inputChar[12]; char outCh[7]="6";scanf("%d%*c",&n);for(i=0;i { scanf("%s",inputChar);outCh[1]=inputChar[6]; outCh[2]=inputChar[7]
2013-05-23 18:32:15
622
原创 acm 2097
这道题关键是输出结果最后还有个英文的句号要带上 #includeint find(int n,int num){ int sum=num%n; num=num/n; while(num>0){ sum+=num%n; num=num/n;}return sum;}void main(){ int n;
2013-05-23 18:19:18
488
原创 acm 2099
#include#includevoid main(){ int n,m,i,j;while(scanf("%d%d",&n,&m)!=EOF&&n&&m){ i=n%m*100; j=n%m*100+99; int loop=i; char ch[3]=""; int flag; for(flag=0;loop if(loop%
2013-05-23 17:59:01
567
原创 acm 2027
#include#include#includevoid main(){ int t,i,j;char ch[102];int count[5]={0};scanf("%d%*c",&t);for(i=0;i{gets(ch);memset(count,0,sizeof(count)); if(i!=0) printf("\n");
2013-05-22 23:32:19
524
原创 acm 2024
#include#includevoid main(){ int t,i,j; char ch[55]; scanf("%d%*c",&t); for(i=0;i { gets(ch); j=0; if((ch[0]>='A'&&ch[0]='a')||(ch[0]=='_')) { j=1; for
2013-05-22 23:08:59
636
原创 acm 2026
考虑当第一个字符是空格的时候 #include#include#includeusing namespace std;void main(){ int i,j; string ch;while(getline(cin,ch)){ i=0;if(ch[i]>='a'&&ch[i]{ ch[0]=ch[0]-'a'
2013-05-22 22:30:40
466
原创 acm 2030
汉字在计算机中是以两字节来存储的,而且只要判断两字节的大小都是负数就可以了 #include#include#includeusing namespace std;void main(){ int t;scanf("%d",&t);string p;getchar();int len,i,j;for(i=0;i{getline(cin,
2013-05-22 21:55:49
866
原创 敏感词过滤小程序,文中敏感词中间有空格,换行符的也可以处理
今天写了一个敏感词过滤的程序,可以对中英文敏感词 进行过滤,对与文中出现敏感词但是敏感词中间有的空格还有换行的可以进行处理#include#include#include#include#include#include#define NUM 60using namespace std;int cmp(const void *a,const void *b)
2013-05-22 12:40:29
2138
原创 简单的字符串近似匹配
原理有空再写,其实就是动态规划#include#include#include#include #define MAX 0XFFFFFFFusing namespace std; int min(int a,int b,int c){ int t=a>b?b:a; t=t>c?c:t; return t; }int find(
2013-05-21 15:09:47
1032
原创 acm 2022
对于这种从很多数中挑出最大值,或者是最小值的,不用数组,输入一个比较一个。 #include#includevoid main(){ int row,col,max,score,i,j;int n,m;while(scanf("%d%d",&n,&m)!=EOF){max=row=col=0; for(i=0;i for(j=
2013-05-20 18:58:31
619
转载 acm 2089
#include#include#includeint num[1000010];void Init(){ int i,j;char ch[20];num[0]=0;for(i=1;i{num[i]=num[i-1]; itoa(i,ch,10);if(strstr(ch,"62")!=NULL||strstr(ch,"4")!=NULL)
2013-05-20 18:27:32
489
原创 acm 2093终于通过
此题没有说输入人数的多少,那就设置大一些。这个代码找了很久,在网上找的代码。然后自己用qsort函数写了一遍,终于通过了 #include#include#include#includeusing namespace std;struct STUDENT{ char name[11]; int count; int time;}st
2013-05-20 17:33:37
582
原创 大三计划
本人虽是女流之本,专业是软件工程。但是偏偏对软件工程,分析呀什么的没兴趣。经历了2年才发现我真的很喜欢算法。回头看看就数据结构的成绩最高了。而且实验我都是提前完成的。因为兴趣在那里么。 转眼间已经是大二下学期了。突然醒悟过来,要准求自己擅长的,所喜欢的,找来找去就是算法了。班级里的有几个男生acm很厉害。和他们一比,自惭形秽呀。那叫一后悔呀,为什么我入门这么慢,大一为什么不开始学ac
2013-05-20 10:35:49
744
原创 acm 2093
现在先保存结果吧。还没通过#include#include#includestruct STUDENT{ char name[15]; int num; int time;};int cmp(const void *a,const void *b){ STUDENT *x=(STUDENT *)a; STUDENT *y=(
2013-05-20 01:00:46
618
原创 acm 2054 这道题关键是输入数据的处理
if A==B刚刚看这道题的时候因为很水,没想到我想的太水了。在网上看了很多人讨论之后才发现原来是这样:数据的输入格式题目根本没有给出。可能是 00.0 00.0000 1.00 001.000等等,稀奇的数字。但是本质上就是去除数字开头语结尾的无用0.就可以了。输入的字符串容量要足够大。 #include#include#includeusing namespa
2013-05-19 22:15:18
545
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人