博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 1270
阅读量:4588 次
发布时间:2019-06-09

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

类型:递推求解

代码附下:

 1 
//
wrong1  产生的和有两个相同的
 2 
//
wrong2  visti标记数组标记错误
 3 #include <iostream>
 4 #include <cstring>
 5 
using 
namespace std;
 6 
int N, nN, sum[
10010], num[
110];
 7 
bool visit[
10010];
 8 
bool ok(){   
//
num[1], num[2], num[3]假设已经确定,
 9 
            
//
则num[1] + num[4]必定在区间sum(3, nN)中未被标记的第一个数
10     
int i, j = 
3, k, t;
11     
for(i = 
4; i <= N; ++i){
12         
while(visit[j]) j++;
13         
if(j > nN) 
break;
14         num[i] = sum[j] - num[
1]; 
//
find num[i] (3 < i <= N)
15         visit[j] = 
true;          
//
标记sum[j];
16         
for(k = 
2; k < i; ++k){   
//
标记num[i] 与 num[2, i-1]的和,并判断和是否存在,若不存在,结束
17             
for(t = j + 
1; t <= nN; ++t)
18                 
if(!visit[t] && num[i] + num[k] == sum[t]){
19                     visit[t] = 
true; 
break;
20                 }
21             
if(t > nN) 
return 
false;
//
若不存在,结束
22         }
23     }
24     
return 
true;
25 }
26 
27 
int main()
28 {
29     
while(cin>>N){
30         
if(!N) 
break;
31         nN = N * (N - 
1) / 
2;
32         
for(
int i = 
1; i <= nN; ++i) cin>>sum[i];
33         
for(
int i = 
3; i <= nN; ++i){
34             
//
枚举出num[2]:
35 
            
//
because sum[1] = num[1] + num[2];
36 
            
//
sum[2] = num[1] + num[3]; num[2] + num[3] = sum[k]( 3 <= k <= nN)
37             num[
2] = (sum[
1] - sum[
2] + sum[i]) / 
2;
38             num[
1] = sum[
1] - num[
2];
39             num[
3] = sum[
2] - num[
1];
40             memset(visit, 
false
sizeof(visit));
41             
if(num[
2] + num[
3] == sum[i]){
42                 visit[i] = 
true;
43                 
if( ok() ){     
//
检查是否符合条件,若符合,则输出
44                     
for(
int j = 
1; j < N; ++j) cout<<num[j]<<
"
 
";
45                     cout<<num[N]<<endl; 
break;
46                 }
47             }
48         }
49     }
50     
return 
0;
51 }
View Code

 

转载于:https://www.cnblogs.com/yaling/p/3233199.html

你可能感兴趣的文章
JConsole远程连接配置 服务器监控工具
查看>>
了解HTTP协议栈(实践篇)
查看>>
loj10035. 「一本通 2.1 练习 1」Power Strings
查看>>
%s的用法
查看>>
调用底层不能直接访问的类和方法
查看>>
清理缓存的方法 #DF
查看>>
JAVA array,map 转 json 字符串
查看>>
2017-12-27练习
查看>>
NET设计规范(二) 命名规范
查看>>
VMware 9.0.1安装Mac OS X Mountain Lion 10.8.2
查看>>
SSL延迟
查看>>
android新手关于左右滑动的问题,布局把<android.support.v4.view.ViewPager/><ImageView/> 放在上面就不行了。...
查看>>
深入理解DIP、IoC、DI以及IoC容器
查看>>
赋值文件
查看>>
Vue 数组 字典 template v-for 的使用
查看>>
蓝牙模块选择经验谈
查看>>
java中==和equals
查看>>
CCActionPageTurn3D
查看>>
python random
查看>>
esp32-智能语音-cli(调试交互命令)
查看>>