唯一的坑点:需要判断文件末尾
c++版
#include<iostream>
using namespace std;
int main()
{
int a,b;
while(cin>>a>>b) cout<<a+b<<endl;
}
c语言版
#include<stdio.h>
int main()
{
int a,b;
while(scanf("%d %d",&a,&b)!=EOF)//scanf当返回为EOF时为文件末尾
{
printf("%d\n",a+b);
}
}
模仿大佬恶搞版
前缀和差分
#include<iostream>
#include<cstring>
using namespace std;
int d[3] = {0};
int main()
{
int a,b;
while(cin>>a>>b)
{
int sum = 0;
memset(d,0,sizeof(d));
d[1] = a,d[2] = b;
for(int i=2;i>0;i--)
{
d[i] -= d[i-1];
}
for(int i=1;i<=2;i++)
{
for(int j=1;j<=i;j++)
{
sum += d[j];
}
}
cout<<sum<<endl;
}
}
dfs版
#include<iostream>
#include<cstring>
using namespace std;
const int N = 3;
int ans = 0x3f3f3f3f;
int d[N],vis[N];
void dfs(int cnt,int sum)
{
if(cnt==3)
{
ans = min(ans,sum);
return ;
}
for(int i=1;i<=2;i++)
{
if(!vis[i])
{
vis[i] = 1;
dfs(cnt+1,sum+d[i]);
vis[i] = 0;
}
}
}
int main()
{
int a,b;
while(cin>>a>>b)
{
ans = 0x3f3f3f3f;
memset(vis,0,sizeof(vis));
d[1] = a,d[2] = b;
dfs(1,0);
cout<<ans<<endl;
}
}
bfs二叉堆优化版
#include<iostream>
#include<queue>
#include<vector>
#include<algorithm>
#include<cstring>
using namespace std;
typedef pair<int,int> PII;
const int N = 3;
const int dx[2] = {-1,1};
int s[N],d[N];
int bfs()
{
int sum = 0;
priority_queue<PII,vector<PII>,greater<PII> >q;
q.push({1,s[1]});
while(q.size())
{
PII now = q.top(); q.pop();
if(d[now.first]) continue;
d[now.first] = 1;
sum += s[now.first];
for(int i=0;i<2;i++)
{
int x = now.first + dx[i];
if(x>=1&&x<=2) q.push({x,s[x]});
}
}
return sum;
}
int main()
{
int a,b;
while(cin>>a>>b)
{
memset(d,0,sizeof(d));
s[1] = a,s[2] = b;
cout<<bfs()<<endl;
}
}