IT民工
加油!
上一页 1 ··· 15 16 17 18 19 20 21 22 23 ··· 29 下一页
摘要: 这是一道类似于N皇后的问题,叫我们将车放到小棋盘上面去,规则也类似,让每个车都不能攻击到其他车,然后有墙阻隔,车是不能攻击到墙后的车的。参考了knowledgetime大神的代码,用回溯法来解决这个问题。定义一个mat数组,先将棋盘的情况读入,如果是 ’ .’就将mat[i][j] 置为1,X则置为0;然后有一个放置的函数,对于i行,j列,(I,j都从0开始)我们向上与向左搜索,判断是否该行或该列是否已经放置车,如果没有我们就可以将车放上去,然后将mat的值改成 -1。因为墙是置为0的,所以遇到有墙,而墙的同一侧没有东西,我们也是可以放置车的。最后的工作就是每行逐列地搜索,不断更新max的值, 阅读全文
posted @ 2012-01-16 21:47 找回失去的 阅读(672) 评论(0) 推荐(0) 编辑
摘要: 这道题与上面那道题不同,这道题要我们从S + 1开始找出 N个数,这N个数在2到10进制中的形式至少有两个回文数。我们只需依次判断,符合要求就输出即可。/*ID:yucept21LANG:C++TASK:dualpal*/#include<cstdio>#include<cstring>#include<cstdlib>const int MAXN = 50;int N, S;char s[MAXN];char B[] = "0123456789" ;bool ispal( char *s){ int len = strlen( s); 阅读全文
posted @ 2012-01-16 17:29 找回失去的 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 这道题是要我们判断在B进制下,1<= n <= 300, n^2是否为回文数,如果是回文数的话就输出该数及其平方在B进制下的形式。因为进制 2 <= B <= 20,所以先定义一个一个进制数组 const char B[21] = "0123456789ABCDEFGHIJ";然后输入进制n,1->300求出其平方在n进制下的形式,判断是否为回文数,是的话再将数字在n进制下的形式求出。/*ID:yucept21LANG:C++TASK:palsquare*/#include<cstdio>#include<cstring> 阅读全文
posted @ 2012-01-16 17:28 找回失去的 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 这道题的题意给我们一个dict.txt, 里面按照字典序存入了近5000个可接受的牛的名字,然后输入一个编号,让我们输出所有对应的可接受名字,首先我用一个alpha数组将26个字母对应其对应的编号,定义两个字符串,一个用来存编号,一个用来从txt文件读入名字。比较的话,我们通过字符串来对应编号,而不是编号对应字符串,每次读入一个名字,我们就将翻译成编号,然后与输入的编号来比较,如果一致就输出名字,如果没有找到,就输出NONE。/*ID:yucept21LANG:C++TASK:namenum*/#include<cstdio>#include<cstring>#incl 阅读全文
posted @ 2012-01-16 17:27 找回失去的 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 这道题要求找到一种操作方式对字符串数组a进行操作,使得其与b一致。一共有六种操作方式,首先定义三个数组,a,b,c,前两个数组是输入,然后c数组每次选择操作方式之前使其等于a,然后对c进行操作,这道题值得注意的是操作选择是从1到6,必须按照顺序来,进行每一种操作后, 将c与b做比较,如果一致,就输出当前操作的编号,如果找不到操作方式,那么就输出 7./*ID:yucept21LANG:C++TASK:transform*/#include<cstdio>#include<cstring>#include<cstdlib>const int N = 15;ch 阅读全文
posted @ 2012-01-16 17:26 找回失去的 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 这道题前面做了这么多铺垫,然后给我一个长为N的序列,其中有H个1,剩余的是0,要我们按字典序输出该序列的可重集排列,因为昨天刚学会用C++的库函数,我先用Next_permutation函数写了一遍,代码很简洁。#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>using namespace std;int num[20];int main(){ int T; scanf( "%d", &T); int len, n; while( 阅读全文
posted @ 2012-01-15 19:00 找回失去的 阅读(429) 评论(0) 推荐(0) 编辑
摘要: 这道题先输入N个数字,再输入Q个数字,我先将前N个数字按照升序排序,依然用的是qsort,然后逐个查找Q个数字在排序后的数组中的位置(取靠前的),从1到N,因为数字可能比较多,所以我采用二分查找来节省时间。二分的思想很有用,而且值得注意的是二分的时候不能遗漏了,不然会得到错误的答案。这道题的二分:int bsearch( int x, int y, int v){ int mid; while( x < y) { mid = x + ( y - x) / 2; if( a[mid] >= v) y = mid; else x = mid + 1; } return a[x] == 阅读全文
posted @ 2012-01-15 18:57 找回失去的 阅读(358) 评论(0) 推荐(0) 编辑
摘要: 这道题也是一道染色的题,只有黑、白两种颜色,要求有边的两个点不能染成相同的颜色,我用回溯法做的,判断与cur有边的点是否被染色,如果这些点中有一个点已经被染色,那么cur这点只能染与被染色的点不同的颜色,我们就可以向下一个点搜索。如果cur周围的点没有被染色的话,那么cur这点可以自由地染色,我们可以染成黑色或者白色,分两种情况向下一层搜索,直到将所有的点都染上色。然后计数,看哪种情况染的黑色最多,将其复制到color数组中。#include<cstdio>#include<cstring>#include<cstdlib>#define MAXN 110i 阅读全文
posted @ 2012-01-15 18:56 找回失去的 阅读(311) 评论(0) 推荐(0) 编辑
摘要: 这道题要求我们用一条直线将蛋糕平均分成两半,要求两边的cherrie一样多,并且不能有cherrie 在直线上,当然也不能在外边,我们直接枚举所有的直线的系数a,b的可能情况,遇到第一种情况输出即可。#include<cstdio>#include<cstring>#include<cstdlib>typedef struct coordinate{ int x, y;}C;C co[105];int N, M;void cut(){ int left, right, result; for( int a = -500; a <= 500; a ++) 阅读全文
posted @ 2012-01-14 22:18 找回失去的 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 按字典序从小到大输出字符串的全排列,白书的7.2刚好讲到生成可重集的排列,所以参考白书上的代码写了个函数,具体操作过程是先将字符串中的所有字符按字典序排序,然后调用print_permutation( len, s, a, 0)即可。void print_permutation( int len, char *P, char *A, int cur){ if( cur == len) { for( int i = 0; i < len; i ++) printf( "%c", A[i]); printf( "\n"); } else for( in 阅读全文
posted @ 2012-01-14 22:17 找回失去的 阅读(575) 评论(0) 推荐(0) 编辑
上一页 1 ··· 15 16 17 18 19 20 21 22 23 ··· 29 下一页