[poj] 1090 Chain
来源:互联网 发布:潮流相机软件 编辑:程序博客网 时间:2024/05/21 21:38
[poj] 1090 Chain
【题目】http://poj.org/problem?id=1700
【题意】求开锁最少步骤
【算法】递归
【题解】首先按照题意写了一个递归程序,是超时的。但发现了一个规律,就是若修改第N个节点值时,从0到N-1都为0时要花费2个N次方-1次操作。于是从尾到首少秒一次数据串,第几数次遇到的1对应要花费的步骤,第偶数次遇见的1对应节约的步骤。还有N为1000,最大结果(2的1000次方-1)为大数,所以用java大数完成。
【注意】普通递归会超时,但是有助于我们发现规律。
超时代码:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int a[1000];
int ans;
void dg(int i,int x){
if(i<0||a[i]==x) return;
ans++;
a[i]=x;
dg(--i,1);
for(i--;i>=0;i--)dg(i,0);
}
int main(){
int n,i;
while(scanf("%d",&n)!=EOF){
for(i=0;i<n;i++)scanf("%d",&a[i]);
ans=0;
for(i=n-1;i>=0;i--)dg(i,0);
printf("%d\n",ans);
}
return 0;
}
【测试数据】
4
1 0 1 0
10
1 0 0 0 0 0 0 0 0 1
10
0 0 0 0 0 0 0 0 1 1
10
0 0 0 0 0 0 0 1 1 1
10
0 0 0 0 0 0 1 1 1 1
10
0 1 0 0 0 0 0 0 0 1
ans:
6
1022
512
767
640
1020
【AC代码】
import java.io.*;
import java.util.*;
import java.math.*;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
BigInteger a;
int[] s = new int[1000];
int n,i,f;
while(in.hasNext()){
n = in.nextInt();
for(i=0;i<n;i++)s[i]=in.nextInt();
a=BigInteger.ZERO;
f=1;
for(n--;n>=0;n--)
if(s[n]==1){
if(f==1){
a=a.add(new BigInteger("2").pow(n+1).subtract(BigInteger.ONE));
f=0;
}
else{
a=a.subtract(new BigInteger("2").pow(n+1).subtract(BigInteger.ONE));
f=1;
}
}
System.out.println(a);
}
}
}
【心得】我要不断提高效率!
- POJ 1090 Chain
- [poj] 1090 Chain
- POJ 1090Chain
- poj 1090 chain
- POJ 1090 Chain
- POJ 1090 Chain 笔记
- POJ 1090 Chain 递推 + 大数加法
- poj Matrix Chain Multiplication
- poj Matrix Chain Multiplication
- poj 2246Matrix Chain Multiplication
- POJ 2246 Matrix Chain Multiplication
- POJ-2246-Matrix Chain Multiplication
- POJ 2246 Matrix Chain Multiplication 解题报告
- POJ 2246 Matrix Chain Multiplication 栈
- ZOJ-1094,POJ-2246 Matrix Chain Multiplication
- Chain
- Chain
- zoj 1094 poj 2246 Matrix Chain Multiplication(堆栈)
- 深度挖掘打井来-----STUDENTMIS
- java小练习(控制台输出猜一个数,有猜大猜小提示 )
- 2012中兴软件笔试 回忆录
- gcc(mingw)在windows环境下的配置
- 网络游戏协议封包需注意点
- [poj] 1090 Chain
- 第三章 标准库类型
- String 深入理解
- dom4j
- jquery 如何获得 html:text的值
- OpenCV实现PCA算法----输出异常
- 详解僵尸状态(EXIT_ZOMBLE)
- [uva] 10310 Dog and Gopher
- 使用bitmap思想解决字符串包含问题