码迷,mamicode.com
首页 > 其他好文 > 详细

模拟3

时间:2016-05-02 21:29:07      阅读:393      评论:0      收藏:0      [点我收藏+]

标签:

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
A.
d.找出不同的数。。
技术分享
#include<iostream>
#include<stdio.h>
using namespace std;

int main(){

    int T;
    int N;
    int ID[128];
    int i;
    int sum1,sum2;
    int p1,p2;

    scanf("%d",&T);

    while(T--){
        scanf("%d",&N);

        for(i=0;i<N;++i){
            scanf("%d",&ID[i]);
        }

        p1=0;
        for(i=1;i<N;++i){
            if(ID[i]!=ID[i-1]){
                p2=i;
                break;
            }
        }

        sum1=0;
        sum2=0;
        for(i=0;i<N;++i){
            if(ID[i]==ID[p1]){
                ++sum1;
            }
            else if(ID[i]==ID[p2]){
                ++sum2;
            }
        }

        if(sum1==1){
            printf("%d\n",ID[p1]);
        }
        else{
            printf("%d\n",ID[p2]);
        }
    }

    return 0;
}
View Code

 

B.
d.手机滑屏解锁的问题,给出几个1~9之间的几个数,求出密码的所有可能。
s.dfs
技术分享
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;

bool exist[16];
bool vis[16];
int can[16][16];

int t_path[212345][10];

int path[16];

int n;

int sum;

void dfs(int u,int now){

    int i;

    if(now>n){

        for(i=1;i<=9;++i){
            t_path[sum][i]=path[i];
        }

        ++sum;
        return;
    }


    for(i=1;i<=9;++i){
        if(exist[i]&&!vis[i]){

            if( (u==1&&(i==3||i==9||i==7)) || (u==3&&(i==1||i==7||i==9)) ||
                (u==9&&(i==7||i==1||i==3)) || (u==7&&(i==9||i==3||i==1)) ){

                if(vis[can[u][i]]){
                    path[now]=i;
                    vis[i]=true;
                    dfs(i,now+1);
                    vis[i]=false;
                }
                else{

                }
            }
            else if( (u==2&&i==8) || (u==8&&i==2) ||
                     (u==4&&i==6) || (u==6&&i==4) ){

                if(vis[can[u][i]]){
                    path[now]=i;
                    vis[i]=true;
                    dfs(i,now+1);
                    vis[i]=false;
                }
                else{

                }
            }
            else{
                path[now]=i;
                vis[i]=true;
                dfs(i,now+1);
                vis[i]=false;
            }

        }
    }

}

void init(){
    memset(exist,false,sizeof(exist));
}

int main(){

    memset(can,0,sizeof(can));
    can[1][3]=2;
    can[1][9]=5;
    can[1][7]=4;

    can[3][1]=2;
    can[3][7]=5;
    can[3][9]=6;

    can[9][7]=8;
    can[9][1]=5;
    can[9][3]=6;

    can[7][9]=8;
    can[7][3]=5;
    can[7][1]=4;

    //---
    can[2][8]=5;
    can[8][2]=5;

    can[4][6]=5;
    can[6][4]=5;


    int T;
    int i;
    int t;
    int j;

    scanf("%d",&T);

    while(T--){
        scanf("%d",&n);

        init();
        for(i=0;i<n;++i){
            scanf("%d",&t);
            exist[t]=true;
        }

        sum=0;
        for(i=1;i<=9;++i){
            memset(vis,false,sizeof(vis));
            if(exist[i]){
                path[1]=i;
                vis[i]=true;
                dfs(i,2);
                vis[i]=false;
            }
        }


        printf("%d\n",sum);

        for(i=0;i<sum;++i){
            for(j=1;j<n;++j){
                printf("%d ",t_path[i][j]);
            }
            printf("%d\n",t_path[i][n]);
        }

    }

    return 0;
}
View Code

 

C.
d.线段相交拆分问题
s.先排序,好像还可以。。
 
D.
 
E.
d.黑白图像的问题
ps:好像用连通块来判断,还有黑白点的比例。题目比较长,没读题。
 
F.
 
G.
d.积分求体积,求面积。
技术分享
#include <iostream>
#include <cmath>
#include <cstdio>
using namespace std;
#define PI M_PI
int main()
{
    int T;
    double r,h,d,v,s;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%lf%lf%lf",&r,&h,&d);
        v=h*PI*(r+d)*(r+d)+PI*r*r*d*2+2*2*PI*(1.0/3*d*d*d+d*d/4*PI*r);
        s=2*(PI*r*r+PI*(r+d)*h+2*PI*d*d+PI*PI*r*d);
        printf("%.12f %.12f\n",v,s);
    }
    return 0;
}
View Code

 

H.
d.炉石传说也来水题了。。
技术分享
#include<iostream>
#include<stdio.h>
using namespace std;

int main(){

    int T;
    int A1,H1;
    int A2,H2;
    int H3,H4;

    scanf("%d",&T);

    while(T--){
        scanf("%d%d%d%d",&A1,&H1,&A2,&H2);

        if(A1==0){
            printf("Invalid\n");
            continue;
        }

        H3=H1-A2;
        H4=H2-A1;

        if(H3<=0){
            printf("Discard ");
        }
        else{
            printf("%d %d ",A1,H3);
        }

        if(H4<=0){
            printf("Discard\n");
        }
        else{
            printf("%d %d\n",A2,H4);
        }

    }

    return 0;
}
View Code

 

I.
ps:又是最大公约数的问题,尴尬。。
 
 

模拟3

标签:

原文地址:http://www.cnblogs.com/bofengyu/p/5453088.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!