hdu 1560 IDA*
来源:互联网 发布:社交网络的影响 编辑:程序博客网 时间:2024/05/22 07:07
开一个数组来记录当前枚举出的字符串已经包含了每个所给的字符串多少个字符了
然后h函数为 每个所给字符串未包含的字符数的 最大值
AC代码如下:
#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>using namespace std;#define MAX 0x3f3f3f3fchar s[10][10];int N;int length[10], record[10];int maxdeep;char addchar[4] = { 'A', 'T', 'C', 'G' };bool check(){for( int i = 0; i < N; i++ ){if( record[i] != length[i] ){return false;}}return true;}int h(){int ans = 0;for( int i = 0; i < N; i++ ){ans = max( ans, length[i] - record[i] );}return ans;}bool DFS( int deep ){if( deep == maxdeep ){return check();}if( deep + h() > maxdeep ){return false;}for( int i = 0; i < 4; i++ ){int temp[10];for( int j = 0; j < N; j++ ){if( s[j][record[j]] == addchar[i] ){temp[j] = 1;}else{temp[j] = 0;}}for( int j = 0; j < N; j++ ){record[j] += temp[j];}if( DFS( deep + 1 ) ){return true;}for( int j = 0; j < N; j++ ){record[j] -= temp[j];}}return false;}int main(){int T;scanf( "%d", &T );while( T-- ){cin >> N;for( int i = 0; i < N; i++ ){scanf( "%s", s[i] );}memset( record, 0, sizeof( record ) );for( int i = 0; i < N; i++ ){length[i] = strlen( s[i] );}maxdeep = 0;while( 1 ){memset( record, 0, sizeof( record ) );if( DFS( 0 ) ){break;}maxdeep++;}cout << maxdeep << endl;}return 0;}
0 0
- hdu 1560 IDA*
- 【IDA*】hdu 1560
- hdu 1560(IDA*)
- HDU 1560 IDA*搜索
- hdu 2234+1560 IDA*
- HDU 1560 IDA*
- HDU 1560 IDA*
- HDU 1560 DNA sequence IDA*
- hdu 1560 DNA sequence(IDA*)
- HDU 1560 DNA sequence(IDA*~)
- HDU 1560 DNA sequence IDA*搜索
- hdu 1560 DNA sequence (IDA*)
- HDU-1560 DNA sequence(IDA*)
- hdu 1560 DNA sequence(IDA*)
- HDU 1560 DNA sequence(IDA*搜索)
- hdu oj 1560 DNA sequence(IDA*)
- HDU 1560 DNA sequence(IDA*)
- HDU 1560 DNA sequence(IDA*)
- RQNOJ - PID34 紧急援救 (BFS)
- php代码备份mysql数据库
- oracle 连接 oracle数据库
- 电商繁荣的背后
- ubuntu中的usr/share/backgrounds文件夹中为何不能粘贴图片?
- hdu 1560 IDA*
- Redis mysql应用
- 学习总结-映射集合
- ubuntu cpu频率控制
- NGUI控件说明(中文) UIPanel
- Mysql Event 调度历史记录
- 企业宣传片的作用
- ORACLE函数大全
- 基于百度地图API与本地数据库交互的标记点功能。