ADV-141-判断名次
来源:互联网 发布:yum remove php 编辑:程序博客网 时间:2024/05/21 06:15
问题描述
某场比赛过后,你想要知道A~E五个人的排名是什么,于是要求他们每个人说了一句话。(经典的开头……-_-!)得了第1名的人23,说了假话;得了第5名的人不好意思,也说了假话;为了使求解问题简单,第3名同样说了假话。(奇数名次说假话)
输入格式
共5行,各行依次表示A~E说的话。
每行包含一个形如“A>=3”的名次判断,即一个大写字母+关系运算符+一个数字,不包含空格。
大写字母A~E,关系运算<、<=、=、>=、>、!=,数字1~5。注意:等于是“=”不是“==”!
每行包含一个形如“A>=3”的名次判断,即一个大写字母+关系运算符+一个数字,不包含空格。
大写字母A~E,关系运算<、<=、=、>=、>、!=,数字1~5。注意:等于是“=”不是“==”!
输出格式
可能有多解,请按照字典序输出排名序列,每个解一行
最后一行输出解的数量
最后一行输出解的数量
样例输入
A=2
D=5
E>3
A>2
B!=1
D=5
E>3
A>2
B!=1
样例输出
ACDEB
AECBD
BADCE
BCADE
BDACE
CEADB
CEBDA
7
AECBD
BADCE
BCADE
BDACE
CEADB
CEBDA
7
//-------C-----------#include<stdlib.h>#include<stdio.h>#include<string.h>int a,b,c,d,e;int count =0; char s[5][20];int check(char s){ if(s=='A') return a; if(s=='B') return b; if(s=='C') return c; if(s=='D') return d; if(s=='E') return e;} int fun(char s[]){ //函数用来判断说话的正误 int i,j; if(strlen(s)==3){ if(s[1]=='='){ //等于号情况 return check(s[0])==(s[2]-'0'); }else if(s[1]=='>'){ //大于号情况 return check(s[0])>(s[2]-'0'); }else{ //小于号情况 return check(s[0])<(s[2]-'0'); } }else{ if(s[1]=='>'){ //大于等于 return check(s[0])>=(s[3]-'0'); }else if(s[1]=='!'){ //不等于 return check(s[0])!=(s[3]-'0'); }else{ //小于等于 return check(s[0])<=(s[3]-'0'); } }}int say(int k,int m){ //printf("%d-------%d\n",k,fun(s[m])); if(k%2==0){ if(fun(s[m])){ return 1; }; return 0; } if(k%2==1){ if(!fun(s[m])){ return 1; }; return 0; }}int pardon (int a, int b, int c, int d, int e){ if(a==b||a==c||a==d){ return 0; } if(a==e||b==c||b==d||b==e||c==d){ return 0; } if(c==e||d==e){ return 0; } return 1;}int main(){ int i,j; char pai[200][6]; for(i=0;i<5;i++){ gets(s[i]); } for(a=1;a<6;a++) for(b=1;b<6;b++) for(c=1;c<6;c++) for(d=1;d<6;d++) for(e=1;e<6;e++){ //printf("%d%d% d%d%d\n",a,b,c,d,e); if(!pardon(a,b,c,d,e)){ continue; } //printf("%d%d% d%d%d\n",a,b,c,d,e); if(say(a,0)){ ///* if(say(b,1)){ if(say(c,2)){ if(say(d,3)){ if(say(e,4)){ //printf("%d%d%d%d%d\n",a,b,c,d,e); pai[count][a-1]='A'; pai[count][b-1]='B'; pai[count][c-1]='C'; pai[count][d-1]='D'; pai[count][e-1]='E'; pai[count][5]='\0'; //printf("\n"); count++; //printf("%c%c%c%c%c",a+'A'-1,b+'A'-1,c+'A'-1,d+'A'-1,e+'A'-1); } } } } //*/ //printf("%d----%d\n",a,say(a,0)); //printf("%d%d%d%d%d\n",a,b,c,d,e); } } char temp[5]; for(i=0;i<count;i++){ for(j=i;j<count;j++){ if(strcmp(pai[i],pai[j])>0){ strcpy(temp,pai[i]); strcpy(pai[i],pai[j]); strcpy(pai[j],temp); } } } for(i=0;i<count;i++){ puts(pai[i]); } printf("%d\n",count); system("pause"); return 0; }//---------C++---------#include <iostream>#include <cstring>#include <cstdio> using namespace std;int to[5];int obj[5];int par[5];bool tar[5];int position[5];int rec[5];int cnt;bool cmp(int opr,int a,int b){if(opr==0)return a>=b;else if(opr==1)return a<=b;else if(opr==2)return a==b;else if(opr==3)return a!=b;else if(opr==4)return a>b;else return a<b;}void judge(){bool tb=true;for(int i=0;i<5;i++){if(position[i]%2){if(!cmp(to[i],position[obj[i]],par[i])){tb=false;break;}}else{if(!cmp(5-to[i],position[obj[i]],par[i])){tb=false;break;}}}if(tb){printf("%c%c%c%c%c\n",rec[0]+'A',rec[1]+'A',rec[2]+'A',rec[3]+'A',rec[4]+'A');cnt++;}}void dfs(int num){if(num==5){judge();return;}for(int i=0;i<5;i++){if(!tar[i]){position[i]=num;rec[num]=i;tar[i]=true;dfs(num+1);tar[i]=false;}}}int main(int argc, char** argv) {memset(tar,false,sizeof tar);for(int i=0;i<5;i++){char s[5],c1;scanf("%s",s);obj[i]=s[0]-'A';if(strlen(s)==4){if(s[1]=='<')to[i]=1;else if(s[1]=='!')to[i]=3;else to[i]=0;par[i]=s[3]-'0';}else{if(s[1]=='<')to[i]=5;else if(s[1]=='=')to[i]=2;else to[i]=4;par[i]=s[2]-'0';}par[i]-=1;} cnt=0;dfs(0);printf("%d\n",cnt);return 0;}
阅读全文
0 0
- ADV-141-判断名次
- 蓝桥杯 判断名次
- 【C++】判断名次
- 算法提高 判断名次
- 蓝桥杯 ADV-71 算法提高 判断回文
- 蓝桥杯 ADV-91 算法提高 素数判断
- ADV-71-算法提高-判断回文
- 蓝桥杯 ADV-91 算法提高 素数判断
- 算法提高 ADV-71 判断回文
- 算法提高 ADV-91 素数判断
- 蓝桥杯_算法提高_判断名次
- C++ 蓝桥杯OJ题目 判断名次
- Adv code
- BATMAN-ADV
- 用C写出一个程序,判断五位选手的名次
- C语言解决现实生活的问题1——判断比赛名次
- 名次排序
- 名次简介
- 计算几何入门题推荐
- WIN-Anaconda2 和 Anaconda3.x 并存
- 【智能制造】制造业智能变革之道| 技术篇之一:工业物联网
- 51Nod
- QR分解法(QR decomposition)
- ADV-141-判断名次
- sqoop
- 【商业模式】百度力推无人驾驶技术背后:陆奇详解人工智能的商业化逻辑
- RIB表与FIB表、ARP表与FDB表
- 洽谈你的情商
- 洛谷最优贸易1073
- raft 一致性算法
- 比高房价更可怕的是,35岁以后你还能干嘛?这是我看过的最棒建议
- 一起艳学java多线程(一)