java 实现扫雷算法 小时候接触扫雷,完了好久都没有弄明白,最近再次接触扫雷才明白了玩法。 规则:找出一定数量的雷整个游戏才会结束。点击方格,是数字n的话,就表明这个方格的周围8个方格中一共有n个雷。算法: (1)假设一局中有10个雷,方格大小是n*m,用数组map[n][m]表示就可以了,map[i][j] (0 (2) 随机生成10个雷,并且每次生成一个雷,给这个
安卓游戏 实现飘雪花的界面 前几天,有看到一个手机游戏中一飘雪花的场景,感觉很漂亮。今天也想实现一下。 首先要找一副雪花png图。关键的地方: (1)在程序中显示的雪花大小有3种,其实都是同一张图片,在程序中改大小就可以了。 (2) 游戏中的一个雪花 就是一个类,这个类有雪花的坐标,原始的坐标(为了重新赋值用),图片的id号,速度的
java 实现 连连看的算法 前几天要写一程序 连连看 。上网查了很多。总结一下。算法大致分为2种。(1) 图的广度搜索算法(这边就不讲了) (2)当连接两张图片的线条拐点不超过 2个的时候,此时分为3种情况。没有拐点,只有一个拐点,有两个拐点。 我们可以把连连看中的图片坐标看做是一个2维坐标,就用(x,y)坐标。红色的字体就是放图片的位置。黑色的就相当于那个边框。 (1)当
自己写的安卓程序如何改变图标 在程序中使用自己的图标,其实很简单 。第一步 :最好将自定义的图标 大小控制在48dp左右第二部:打开工程文件 夹bin未剪辑啊下的res 文件夹 把带有“ic_launcher.png” 的图片改成自己的图片,我是把3个drawable文件夹下的ic_laucher.png 全替换。还有文件夹下res的也一样 。第三步:运行程序在手机上显示的就是自己的定义的图标
java swt 中的悬浮框 这次写的小程序中要使用悬浮框。网上关于swt的资料很少。最后和同学讨论了半天,决定使用java swing awt的JWindow 来做。由于那个悬浮框是根据鼠标的坐标来改变位置的。所以你获取鼠标坐标的时候要获取在整个屏幕中的位置,因为你的主框有可能会移动下边的代码是写的一个悬浮框的类package testJwindow;import java.awt.Color;import
求某属性集的函数依赖集的闭包运算 闲的没事干,看了看数据库的求闭包的。顺便将代码页实现了。如果有错请指出。#include#include#include#include#include#define ELE 26 //U 属性集合 最多为26个#define R 50 //输入的F的函数依赖集的元素个数最多为50 个using namespace std;int ma
关于单词游戏软件的单词存库问题 闲的没事干,就和同学组合写一单词软件。项目还在继续,首先是下载个年级的单词,然后入库。由于下载的单词格式不一样,最后将所下载的4个年级的单词格式统一一下,只存储英文,中文,毕竟刚开始做做的就比较简单。重点就是讲整理好的txt导入mysql中的时候,列和列之间的间隔符号要一致,即使是空格,数量也是一样的。 现在说说我们存库的过程。 (1) 由于文件是
java 对一单词的找出全部组合 单词必须是英文字母组成的,而且单词的字母不能重复。因为使用的是bitset记录的组合。刚刚写完之后,突然想到,也可以对算法进行改改,直接能求出字母重复的。用 char ch[len]=“*******”(刚开始的组合), int match[len]=.{0,1.2.。。。。。len-1}记录组合ch每个单词的下标,然后用字典排序法对0,1.。。len-1这几个数进行排列,每一个排列就是一次
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
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;
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==-
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
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;
acm 2096 #includeint main(){int i,n;_int64 j,t;scanf("%d",&n);for(i=0;i{ scanf("%I64d%I64d",&j,&t);printf("%I64d",(j+t)%100);}return 0;}
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
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
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])
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;
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
组合 排列 上课学习了一点组合数学的知识,现在总结一下。根据一下几类可以,可以将组合问题大致分为4类:(1)对象可不可以区分 (2)对象不可不以重复的取 (3)对象的先后取顺序会影响结果吗。 没有重复的选取:(1)排列 A(m,n)= m!/(m-n)!表示从m个对象中选出n个进行排列 (2)组合C(m,n) =m!/