博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU-1172 猜数字 广搜
阅读量:6590 次
发布时间:2019-06-24

本文共 1975 字,大约阅读时间需要 6 分钟。

这题要换个思维,不要想着如何通过已有的条件来得到正确的值,而是枚举0000-9999这10000个数,看满足条件的数字有多少个,只有刚好有一个的数满足的情况下才输出。

代码如下:

#include 
#include
#include
#include
#include
#define MIN( x, y ) (x) < (y) ? (x) : (y) using namespace std; struct Node {
char num[10]; int right, pos; }n[105]; void cmp( char *s, char *c, int &right, int &pos ) {
right = pos = 0; int shash[15] = {
0}; int chash[15] = {
0}; for( int i = 0; i < 4; ++i ) {
if( s[i] == c[i] ) pos++; } for( int i = 0; i < 4; ++i ) {
shash[ s[i] ]++; chash[ c[i] ]++; } for( int i = 0; i < 10; ++i ) {
right += MIN( shash[i], chash[i] ); } } void getnext( char *s ) {
for( int i = 3; i >= 0; --i ) {
if( s[i] < 9 ) {
s[i]++; return; } else {
s[i] = 0; } } } void DFS( bool &ans, int &num, int N ) {
int right, pos, flag, cnt = 0; char t[4] = {
0}; for( int i = 0; i < 10000; ++i ) {
flag = 0; for( int i = 0; i < N; ++i ) {
cmp( t, n[i].num, right, pos ); if( right == n[i].right && pos == n[i].pos ) continue; else {
flag = 1; break; } } if( !flag ) {
ans = true; cnt++; num = t[0] * 1000 + t[1] * 100 + t[2] * 10 + t[3]; if( cnt > 1 ) {
ans = false; return; } } getnext( t ); } } int main() {
int N; while( scanf( "%d", &N ), N ) {
int num = 0; for( int i = 0; i < N; ++i ) {
scanf( "%s %d %d", n[i].num, &n[i].right, &n[i].pos ); for( int j = 0; j < 4; ++j ) n[i].num[j] -= '0'; } bool ans = false; DFS( ans, num, N ); if( ans ) printf( "%d\n", num ); else puts( "Not sure" ); }; return 0; }

转载地址:http://wazio.baihongyu.com/

你可能感兴趣的文章
QEMU KVM libvirt 手册(1): 安装
查看>>
【LeetCode】35. Search Insert Position (2 solutions)
查看>>
js判断密码强度
查看>>
ASP.NET中使用TreeView显示文件
查看>>
新型I/O架构引领存储之变(四)
查看>>
atitit.元编程总结 o99
查看>>
uniGUI试用笔记(二)
查看>>
HOG特征-理解篇
查看>>
javascript生成n至m的随机整数
查看>>
Microsoft.AlphaImageLoader滤镜解说
查看>>
Could not drop object &#39;student&#39; because it is referenced by a FOREIGN KEY constraint
查看>>
The OpenGL pipeline
查看>>
extjs_02_grid(显示本地数据,显示跨域数据)
查看>>
Tokyo Tyrant(TTServer)系列(四)-tcrmgr远程管理与调试
查看>>
超过响应缓冲区限制
查看>>
SQL基础--&gt; 约束(CONSTRAINT)
查看>>
ubuntu 下安装 matplotlib
查看>>
偶的新的一天
查看>>
webservice的几个简单概念
查看>>
HttpSolrServer 实例管理参考,来自org.eclipse.smila.solr
查看>>