zoukankan      html  css  js  c++  java
  • poj 2356

    http://poj.org/problem?id=2356

    方法一:  鸽巢原理

    解题思路:  n个数,,依次求其s[0],s[1],s[2],s[3]。。。。。s[n]  然后对 n取模,,必然会得到n+1个结果,,这n+1个结果放到0---n-1,这n个盒子中,必然会有重复的,所以这两个重复的之间,必然就是所求的结果。

     1 #include <iostream>
     2 #include<cstring>
     3 using namespace std;
     4 int n;
     5 int sum [10002];
     6 int s[10002];
     7 int select[10002];
     8 int main()
     9 {
    10     cin>>n;
    11     for(int i=1;i<=n;i++)
    12         cin>>s[i];
    13     sum[0]=0;
    14     for(int i=1;i<=n;i++)
    15         sum[i]=(sum[i-1]+s[i])%n;
    16     memset(select,-1,sizeof(select));
    17     for(int i=0;i<=n;i++){
    18         if(select[sum[i]]==-1)
    19             select[sum[i]]=i;
    20         else{
    21             cout<<i-select[sum[i]]<<endl;
    22             for(int j=select[sum[i]]+1;j<=i;j++)
    23                 cout<<s[j]<<endl;
    24             break;
    25         }
    26     }
    27     return 0;
    28 }

    方法二: 深搜

    搜索,还真是强大啊。。虽然比较麻烦,,但是确实基本的解法。。一点更要掌握。

     1 #include<iostream>
     2 using namespace std;
     3 int s[10002];
     4 int n;
     5 int cnt;
     6 bool dfs(int sum,int cur){
     7     int i;
     8     if(sum%n==0&&sum>=n){
     9         cout<<cnt<<endl;
    10         return true;
    11     }
    12     for(i=cur+1;i<=n;i++){
    13         cnt++;
    14         if(dfs(sum+s[i],i)){
    15             cout<<s[i]<<endl;
    16             return true;
    17         }
    18         cnt--;
    19     }
    20     return false;
    21 }
    22 int main(){
    23     cin>>n;
    24     for(int i=1;i<=n;i++)
    25         cin>>s[i];
    26     cnt = 0;
    27     dfs(0,0);
    28 }
  • 相关阅读:
    android 通知栏 notifcation
    通过ResultSet获取到rs的记录数的几种方法
    网上书城随笔
    jdbc 事务
    正则表达式
    String,StringBuffer与StringBuilder的区别??
    Java 之 FileReader FileInputStream InputStreamReader BufferedReader 作用与区
    算法
    呵呵
    Hibernate
  • 原文地址:https://www.cnblogs.com/Bang-cansee/p/3236097.html
Copyright © 2011-2022 走看看