
搜索
文章平均质量分 72
_chunqiu_
这个作者很懒,什么都没留下…
展开
-
死亡洞穴
Problem 117: 死亡洞穴Time Limit:1 Ms| Memory Limit:64 MBDifficulty:3Description在 caima 的 RPG 游戏中,控制着两个人 VV 和 JJ。这次 VV 和 JJ 掉入了一个死亡洞穴,洞穴是一个 N*M 的矩阵。之所以称之为死亡洞穴,是因为在这个矩阵中有一些死亡十字。(如下图中原创 2014-03-18 19:38:43 · 691 阅读 · 0 评论 -
sticks(深搜剪枝)
SticksTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 113617 Accepted: 26102DescriptionGeorge took sticks of the same length and cut them randomly until原创 2013-12-15 00:19:07 · 540 阅读 · 0 评论 -
重建二叉树
Tree时间限制:1000 ms | 内存限制:65535 KB难度:3描述Little Valentine liked playing with binary trees very much. Her favorite game was constructing randomly looking binary trees with capital letters原创 2013-12-04 21:55:56 · 415 阅读 · 0 评论 -
NYOJ587blockhouses(深搜)
blockhouses时间限制:1000 ms | 内存限制:65535 KB难度:3描述Suppose that we have a square city with straight streets. A map of a city is a square board with n rows and n columns, each representing a street原创 2013-12-07 10:43:25 · 549 阅读 · 0 评论 -
3个水杯
三个水杯时间限制:1000 ms | 内存限制:65535 KB难度:4描述给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你写出一个程序,使其输出使初始状态到达目标状态的最少次数。输入第一行一个整数N(0接下来每组测试数据有两行,第一行给出三个整原创 2013-11-29 21:22:41 · 523 阅读 · 0 评论 -
验证数独
#include#includeint sudoku[9][9];int mark[20];void dfs(){ int flag = 0; int i, j; int a, b; for(i = 0; i < 9; i ++){//row judge memset(mark, 0, sizeof(mark));//判断完一行进行初始化 for(j = 0; j < 9原创 2013-11-14 13:13:40 · 571 阅读 · 0 评论 -
sudolu killer
思路: 找到问号,判断哪个数字可以使用,即行列九宫格里 都没有出现过的数字就能用 每个问号都可能有多种取值,找到一个符合的数字后,进入下个问号,这就相当于全排列:每个数字有多种取值,判断用没用过后就可以进入下一层细节:1 因为这道题只要求输出一组数据所以找到第一组数据后,无需继续进行,return 就好,我用了count来计数,原创 2013-11-23 15:56:48 · 781 阅读 · 0 评论 -
康托展开
康托展开维基百科,自由的百科全书跳转至: 导航、 搜索康托展开是一个全排列到一个自然数的双射,常用于构建哈希表时的空间压缩。 康托展开的实质是计算当前排列在所有由小到大全排列中的顺序,因此是可逆的。以下称第x个全排列是都是指由小到大的顺序。公式X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[原创 2013-11-05 20:20:19 · 634 阅读 · 0 评论 -
整数划分4
整数划分(四)时间限制:1000 ms | 内存限制:65535 KB难度:3描述 暑假来了,hrdv 又要留学校在参加ACM集训了,集训的生活非常Happy(ps:你懂得),可是他最近遇到了一个难题,让他百思不得其解,他非常郁闷。。亲爱的你能帮帮他吗? 问题是我们经常见到的整数划分,给出两个整数 n , m ,要求在 n 中加入m原创 2014-01-02 17:58:49 · 593 阅读 · 0 评论 -
重复数字排列
输入:31 1 2输出:1 1 21 2 12 1 1#include#define N 10int num[N], used[N], a[N];int n, m;void dfs(int l){ int i; if(l >= n){//一共填n个数字 for(i = 0; i < n; i++){ printf("%d", a[i]);原创 2014-01-07 16:41:15 · 632 阅读 · 0 评论 -
重复数字的组合
输入:31 1 2输出:11 11 1 21 22#include#define N 10int num[N], used[N], a[N];int n, m;void dfs(int p,int l){ int i; if(l <= n && l != 0){//每一层都要输出 for(i = 0; i < l; i++){原创 2014-01-07 16:48:56 · 681 阅读 · 0 评论 -
方块填数
【编程题】(满分33分) “数独”是当下炙手可热的智力游戏。一般认为它的起源是“拉丁方块”,是大数学家欧拉于1783年发明的。 如图[1.jpg]所示:6x6的小格被分为6个部分(图中用不同的颜色区分),每个部分含有6个小格(以下也称为分组)。 开始的时候,某些小格中已经填写了字母(ABCDEF之一)。需要在所有剩下的小格中补填字母。原创 2014-03-10 15:52:35 · 702 阅读 · 0 评论 -
排他平方数
题目描述 排它平方数 小明正看着 203879 这个数字发呆。 原来,203879 * 203879 = 41566646641 这有什么神奇呢?仔细观察,203879 是个6位数,并且它的每个数位上的数字都是不同的,并且它平方后的所有数位上都不出现组成它自身的数字。 具有这样特点的6位数还有一个,请你找出它!原创 2014-03-02 22:04:52 · 821 阅读 · 0 评论 -
pat1004 Counting Leaves
A family hierarchy is usually presented by a pedigree tree. Your job is to count those family members who have no child.InputEach input file contains one test case. Each case starts with a原创 2014-02-07 22:11:43 · 507 阅读 · 0 评论 -
1003
1003. Emergency (25)时间限制400 ms内存限制32000 kB代码长度限制16000 B判题程序Standard作者CHEN, YueAs an emergency rescue team leader of a city, yo原创 2014-02-01 16:56:18 · 487 阅读 · 0 评论 -
古堡算式
福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式: ABCDE * ? = EDCBA 他对华生说:“ABCDE应该代表不同的数字,问号也代表某个数字!” 华生:“我猜也是!” 于是,两人沉默了好久,还是没有算出合适的结果来。 请你利用计算机的优势,找到破解的答案。 把 ABCDE 所代表的原创 2014-02-01 20:32:18 · 523 阅读 · 0 评论 -
flip game
Flip GameTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 27237 Accepted: 11816DescriptionFlip game is played on a rectangular 4x4 field with two-sided p原创 2014-01-13 20:48:45 · 560 阅读 · 0 评论 -
零式求和
Problem 39: 零式求和Time Limit:1 Ms| Memory Limit:128 MBDifficulty:3Description请考虑一个由1到N(N=3, 4, 5 ... 9)的数字组成的递增数列:1 2 3 ... N。现在请在数列中插入“+”表示加,或者“-”表示减,抑或是“ ”表示空白(例如1-2 3就等于1-23),来将每一对数原创 2013-12-26 22:28:20 · 1038 阅读 · 0 评论 -
第39级台阶
小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级! 站在台阶前,他突然又想着一个问题: 如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完39级台阶,有多少种不同的上法呢? 请你利用计算机的优势,帮助小明寻找答案。#includeint step;//台阶数原创 2013-10-30 21:21:22 · 822 阅读 · 0 评论 -
武士风度的牛(广搜)
#include#includeusing namespace std;char map[200][200];int row, col;typedef struct node{ int x, y; int step;}node;//information of nodeint dir[8][2] = {{-1,2}, {1,2},{2,1},{2,-1},{1,-2},原创 2013-11-10 21:56:47 · 1390 阅读 · 0 评论 -
NYOJ143 康托的应用
h#include#include#define N 12// there are N numbers in arrayint num[14];int fac(int i){ int j, sum = 1; for(j = 1; j <= i; j++){ sum = sum * j; } return sum;}int main(){ int code,原创 2013-11-09 19:50:57 · 505 阅读 · 0 评论 -
遍历求符合条件的那个 知识竟答
#includeint title;//题目总数int mark;//分数int s[10];void count(int layer){ int i; /*if(mark < 0) return; if (s[layer] == 0) mark = mark - layer; else mark = mark * 2;*/ if( layer == tit原创 2013-10-31 21:28:55 · 488 阅读 · 0 评论 -
组合数(方法2)由大到小输出
#include//int make_sign[10];//标记数组,如:make_sign[1]=0表示 1这个数字没有走过int number[10];//用来存 数字 number[3]=1;表示输出的第三个数是1int n,r;//n:一共有几个数,相当于每次走有几个路径可以选择void combination(int m ,int n)//从m个数里选 n个数{ int原创 2013-10-30 15:51:50 · 583 阅读 · 0 评论 -
组合数(优化)输出由小到大
#includeint make_sign[10];//标记数组,如:make_sign[1]=0表示 1这个数字没有走过int number[10];//用来存 数字 number[3]=1;表示输出的第三个数是1int n,r;//n:一共有几个数,相当于每次走有几个路径可以选择void combination(int layer)//layer:当前层数{ int i; i原创 2013-10-30 14:43:22 · 773 阅读 · 0 评论 -
组合数(优化)输出数字由大到小输出
#includeint make_sign[10];//标记数组,如:make_sign[1]=0表示 1这个数字没有走过int number[10];//用来存 数字 number[3]=1;表示输出的第三个数是1int n,r;//n:一共有几个数,相当于每次走有几个路径可以选择void combination(int layer)//layer:当前层数{ int i; i原创 2013-10-30 14:28:38 · 687 阅读 · 0 评论 -
组合数(优化,限制路径)输出由小到大
#include//int make_sign[10];//标记数组,如:make_sign[1]=0表示 1这个数字没有走过int number[10];//用来存 数字 number[3]=1;表示输出的第三个数是1int n,r;//n:一共有几个数,相当于每次走有几个路径可以选择void combination(int limits,int layer)//layer:当前层数原创 2013-10-30 15:17:53 · 701 阅读 · 0 评论 -
子集
#includeint s[10] = {0};void subset(int i, int n, int r){ int b[10] = {0}; int j, k = 0; if(i == n) { for(j = n-1, k = 0; j >= 0; j --) {原创 2013-10-29 19:16:15 · 456 阅读 · 0 评论 -
组合数1(遍历所有种路径情况)
#includeint r;void full_array(int k , int n , int *a , int *b){ int i ;if(k > r){ for(i = 1; i <= r; i ++) printf("%d",b[i]); printf("\n") ; } else for(i = n; i >= 1; i --)//原创 2013-10-29 21:10:04 · 722 阅读 · 0 评论 -
最小步数
最少步数时间限制:3000 ms | 内存限制:65535 KB难度:4描述 这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 1,0,0,1,1,0,0,0,1 1,0,1,0,1,1,0,1,1 1,0,0,0,0,1,0,0,1 1,1,0,1,0,1,0,0,1 1,1,原创 2013-11-12 21:31:17 · 435 阅读 · 0 评论 -
素数环
#includeint mark[100];int num[100];int n;int flag[100];void prime(){ int i, j; flag[0] = flag[1] = 1; for(i = 2; i <= 50; i ++){ if(flag[i] == 0){ for(j = i + i; j <= 100; j = j + i){原创 2013-11-11 22:01:50 · 442 阅读 · 0 评论 -
运用全排列简单搜图型
运用全排列简单搜图型全局变量,题目中一直会用到的东西void 搜索(int x, int y){ if(x,y 到了目标){//当有目标的时候写 if(限定条件) operation..//count or print } else{ for(几个方向){ if(不越界 && 没走过){ 标记走过;原创 2013-11-16 10:29:47 · 514 阅读 · 0 评论 -
NYOJ 523 (深搜,不可用的方法)
#includeint dir[6][3] = {{0,0,1},{0,0,-1},{1,0,0},{-1,0,0},{0,1,0},{0,-1,0}};int map[55][55][55];int A, B, C, T;int minute;void count(int step, int x, int y, int z){ //printf("step:%d\n",step)原创 2013-11-09 21:41:47 · 472 阅读 · 0 评论 -
火车进站
#include#includeint temp[50];int mark[50];int b[50];int n;int count;void dfs(int level){ int i, j, k = 0; if(count > 20) return; if(level == n + 1){ for(i = 1; i <= n; i++){ k = 0原创 2013-11-23 14:12:15 · 4960 阅读 · 0 评论 -
带分数
标题:带分数100 可以表示为带分数的形式:100 = 3 + 69258 / 714 还可以表示为:100 = 82 + 3546 / 197 注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0)。类似这样的带分数,100 有11 种表示法。题目要求: 从标准输入读入一个正整数N (N程序输出该数字原创 2013-11-06 20:07:51 · 614 阅读 · 0 评论 -
N皇后
思路:是全排列的一个变形,就是加了限定条件这个限定条件就是 对角线上只能有一个数,行列只能有一个数这种 限制 简化了输出,也即 像全排列 每一行所对应的列数 不能重复 并且列数与列数之间又存在限定条件比方说 右对角线:行数 1 2 3 4 5 6列数 1 2 3 4 5 6 2 3 4 5 6 1就会发现 这个方原创 2013-11-04 22:56:47 · 413 阅读 · 0 评论 -
素数环
思路: 全排列,不过是1 的全排列, 即,调用全排列的函数时,传1 全排列中,要将数字存入 数组中 数组里,将前后两个数相加 判断是不是素数,这里应该每一层都与数组里前一个数相加进行判断,不否和就回到上一层//这里 素数要先存入素数数组中,最后一层的时候将这个数+1 进行判断原创 2013-11-03 22:46:08 · 589 阅读 · 0 评论 -
NYOJ 27 水池数目
#includeint n;int map[101][101];int row, col;int der[4][2]={{0, 1},{1, 0},{0 , -1},{-1, 0}};//用二维数组记录四个方向void count(int x, int y){ int i; int x1,y1 ; map[x][y] = 0;//可以走到即置零 //else //{原创 2013-11-03 21:23:58 · 656 阅读 · 0 评论 -
全排列
#include void full_array(int k , int n , int *a , int *b) //k : layers n:all numbers *a:way *b:puts numbers{ int i ; if(k == n){ for(i = 0 ; i < n ; i ++) {原创 2013-11-02 21:24:18 · 392 阅读 · 0 评论 -
NYOJ58最小步数(神搜)
#includeint min_step = 1000000;int c,d;int map[][9]={{1,1,1,1,1,1,1,1,1}, {1,0,0,1,0,0,1,0,1}, {1,0,0,1,1,0,0,0,1}, {1,0,1,0,1,1,0,1,1}, {1,0,0,0,0,1,0,0,1}, {1,1,0,1,0,1,0,0,1}, {1,1,0,1,0,1原创 2013-11-02 20:54:52 · 611 阅读 · 0 评论