演算法學習之路|稱量硬幣(模擬)
有一堆硬幣,其中有一枚是假的,可能更輕也可能更重,用天平在兩邊放上相同數量的硬幣,找出假幣。
輸入格式:第一行兩個數N,K,表示硬幣數和稱量次數。接下來2K行,第一行第一個數表示天平兩邊硬幣個數n,後2n個數為兩邊硬幣編號,第二行為>,<或=符號
輸出格式:如果不能判斷哪個硬幣是假的,輸出0,能就輸出硬幣編號。
輸入樣例:
5 3
2 1 2 3 4
<
1 1 4
=
1 2 5
=
輸出樣例:
3
解題思路:用equal陣列標記沒問題的硬幣(兩邊重量相同則硬幣一定都是合格的)
用l和h陣列分別標記稱量出較輕和較重的硬幣,l和h標記相等的說明硬幣出現在輕的一側和重的一側的次數相等,硬幣是合格的,否則是不合格的。
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
int n,k,equ[1050],l[1050],h[1050],flag[1050],tmp[1050];
int main()
{
scanf("%d%d",&n,&k);
memset(equ,0,sizeof(equ));
memset(l,0,sizeof(l));
memset(h,0,sizeof(h));
memset(tmp,0,sizeof(tmp));
for (int i=1;i<=k;i++)
{
int x;
char ch;
scanf("%d",&x);
for(int j=0;j<2*x;j++)
scanf("%d",&tmp[j]);
ch=getchar();
while(ch!=`=` && ch!=`<` && ch!=`>`)
{
ch=getchar();
}
if(ch==`<`)
{
for(int j=0;j<x;j++)
l[tmp[j]]=1;
for(int j=x;j<2*x;j++)
h[tmp[j]]=1;
for(int j=1;j<=n;j++)
{
bool flag=true;
for(int k=0;k<2*x;k++)
if(j==tmp[k])
{
flag=false;
break;
}
if(flag)
equ[j]=1;
}
}
else if(ch==`=`)
{
for(int j=0;j<2*x;j++)
equ[tmp[j]]=1;
}
else if(ch==`>`)
{
for(int j=0;j<x;j++)
h[tmp[j]]=1;
for(int j=x;j<2*x;j++)
l[tmp[j]]=1;
for(int j=1;j<=n;j++)
{
bool flag=true;
for(int k=0;k<2*x;k++)
if(j==tmp[k])
{
flag=false;
break;
}
if(flag)
equ[j]=1;
}
}
}
int ans,cnt=0;
for(int i=1;i<=n;i++)
{
if(equ[i])
continue;
if(l[i]&&h[i])
continue;
ans=i;
cnt++;
}
if(cnt>1)
printf("0
");
else
printf("%d
", ans);
return 0;
}
相關文章
- 演算法學習之路|搬運傢俱(模擬)演算法
- JAVA學習之路(多執行緒)—模擬售票(細解)Java執行緒
- EM演算法學習筆記與三硬幣模型推導演算法筆記模型
- 演算法 拿硬幣演算法
- Keil的軟體模擬和硬體模擬
- 演算法學習之路|划拳演算法
- 模擬退火 學習筆記筆記
- Proteus模擬學習筆記筆記
- 模擬退火學習筆記筆記
- 演算法學習之路|A除以B演算法
- 演算法學習之路|列印排名演算法
- 演算法學習之路|方格分割演算法
- 演算法學習之路|朋友數演算法
- 演算法學習之路|SpellItRight演算法
- 演算法學習之路|歐幾里得遊戲演算法遊戲
- 演算法學習之路|月餅演算法
- 演算法學習之路|PATRanking演算法
- 演算法學習之路|列印沙漏演算法
- 演算法學習之路|快速排序演算法排序
- 演算法學習之路|結繩演算法
- 演算法學習之路|數零壹演算法
- 演算法學習之路|開學寄語演算法
- python演算法:換硬幣Python演算法
- 演算法學習之路|說反話演算法
- 演算法學習之路|幼兒園買玩具演算法
- 演算法學習之路|小賭怡情演算法
- 演算法學習之路|影像過濾演算法
- 演算法學習之路|日期問題演算法
- 演算法學習之路|賣個萌演算法
- 演算法學習之路|螺旋矩陣演算法矩陣
- 演算法學習之路|選擇題演算法
- 演算法學習之路|字元統計演算法字元
- 演算法學習之路|科學計數法演算法
- 演算法學習之路|PlayOnWords(尤拉道路+dfs)演算法
- 演算法學習之路|舊鍵盤打字演算法
- 演算法學習之路|最簡分數演算法
- 演算法學習之路|檢驗身份證演算法
- 演算法學習之路|愛丁頓數演算法