while(getline(cin, line))//读取一行的字符串
{
int sum = 0, x;
stringstream ss(line);//创建字符串流
while(ss >> x) sum += x;//按空格输出
cout << sum << endl;
}
position = s.find("jk");
if (position != s.npos) //如果没找到,返回一个特别的标志c++中用npos表示,我这里npos取值是4294967295,
{
printf("position is : %d\n" ,position);
}
else
{
printf("Not found the flag\n");
}
题目链接:10474 - Where is the Marble?
代码:
#include
#include
#include
using namespace std;
const int MAX = 20000;
int T, N, Q, a[MAX], n;
int main()
{
T = 1;
while(scanf("%d%d", &N, &Q)!=EOF && (N+Q))
{
for(int i=0; i
题目链接:101 - The Blocks Problem
#include
#include
#include
using namespace std;
const int MAX = 30;
vector upp[MAX];
char order1[10], order2[10];
int a, b, n;
struct Node
{
int bot, idx, id;//所在列的底层块编号,所在列的自己的下标,自己的编号
}B[MAX];
int main()
{
scanf("%d", &n);
for(int i=0; ista; i--)
{
int v = upp[ida][i];
B[v].bot = B[v].id;
B[v].idx = -1;
upp[ida].pop_back();
}
}
//onto命令,将b物块上方所有的物体清空
if(order2[1]=='n')
{
for(int i=upp[idb].size()-1; i>stb; i--)
{
int v = upp[idb][i];
B[v].bot = B[v].id;
B[v].idx = -1;
upp[idb].pop_back();
}
}
if(sta==-1)//当是最底层的那个物块,a入b列
{
B[a].bot = idb;
B[a].idx = upp[idb].size();
sta = 0;
upp[idb].push_back(B[a].id);
}
//a及其上方的物块放入b列中
for(int i=sta; i=sta; i--)//清空a及其上方的物块
upp[ida].pop_back();
}
//打印输出
for(int i=0; i
题目链接:10815 - Andy’s First Dictionary
代码:
#include
#include
#include
#include
#include
using namespace std;
char ch;
string s;
set Set;
int main()
{
s = "";
int flag = 0;//用来标记上一个是不是字母
while((ch=getchar())!=EOF)
{
if(isalpha(ch))
{
s += tolower(ch);
flag = 1;
}
else if(flag)//前一个是字母
{
Set.insert(s);
s = "";
flag = 0;
}
}
if(flag) Set.insert(s);
set::iterator it;
for(it=Set.begin(); it!=Set.end(); it++)
{
cout << *it << endl;
}
return 0;
}
题目链接:156 - Ananagrams
代码:
#include
#include
#include
#include
#include
#include
#include
题目链接:12096 The SetStack Computer
set()
。代码:
#include
#include
#include
#include
题目链接:540 - Team Queue
ENQUEUEx:编号为x的人进入长队。
DEQUEUE:长队的队首出队。
STOP:停止模拟。
代码:
#include
#include
#include
#include
#include
题目链接:136 - Ugly Numbers
代码:
#include
#include
#include
#include
#include
using namespace std;
const int MAX = 1500;
typedef long long LL;
set S;
priority_queue, greater >pq;
LL a, b, c, t;
int main()
{
int cnt = 0;
//初始化
pq.push(1);
S.insert(1);
while(cnt
题目链接:400 - Unix ls
代码:
#include
#include
#include
#include
using namespace std;
string s[101], G[101][60];
int n;
int main()
{
while(cin >> n)
{
int Max = 0;
for(int i=0; i> s[i];
if(Max
题目链接:1592 - Database
参考博文:UVa_1592 - Database
代码:
#include
#include
#include
题目链接:814 - The Letter Carrier’s Rounds
代码:
#include
#include
#include
#include
#include
题目链接:221 - Urban Elevations
参考博文:UVa 221 Urban Elevations 城市正视图 离散化初步 无限化有限
代码:
#include
#include
#include
#include
using namespace std;
const int maxn = 105;
struct Node
{
int id;
double x, y, w, d, h;
bool operator < (const Node &A) const
{
if(x==A.x)
return y=mx)
return 1;
else
return 0;
}
//判断建筑物i是否在mx处可见
bool visible(int i, double mx)
{
if(!cover(i, mx)) return 0;//经过mx处
for(int k=0; k=b[i].h)//保证其他建筑物不遮挡该建筑物
return 0;
}
return 1;
}
int main()
{
int kase = 0;
while(scanf("%d", &n)==1 && n)
{
for(int i=0; i
题目链接:1593 - Alignment of Code
题目大意:输入若干行字符串,每一个单词之间有多个空格,每一个单词不超过80个字符,每行不超过180个字符,一共最多1000多行,输出各列单词的左边界对齐且尽量靠左,单词之间至少空一格。
代码:
#include
#include
#include
#include
#include
#include
using namespace std;
const int maxc = 200;
const int maxr = 1500;
int len[maxc], col[maxr];//len记录每一列的最大长度,col记录每一行的单词个数
string words[maxr][maxc];//记录每一个单词
string s, str;
int main()
{
int k = 0;
memset(len, 0, sizeof(len));
while(getline(cin, s))
{
stringstream ss(s);
int cnt = 0;
while(ss >> str)
{
int t = str.size();
len[cnt] = max(len[cnt], t);//更新每一列最大长度
words[k][cnt++] = str;
}
col[k++] = cnt;
}
for(int i=0; i
题目链接:1594 - Ducci Sequence
代码:
#include
#include
#include
#include
using namespace std;
const int MAX = 30;
int T, n;
int a[MAX], b[MAX];
int Sum(int a[], int n)
{
int sum = 0;
for(int i=0; i
题目链接:10935 - Throwing cards away I
代码:
#include
#include
#include
#include
#include
using namespace std;
queue q;
void Init(int n)
{
while(!q.empty()) q.pop();
for(int i=1; i<=n; i++)
{
q.push(i);
}
}
int main()
{
int n;
while(scanf("%d", &n) && n!=0)
{
vector v;
Init(n);//初始化牌
//模拟操作
while(q.size()>1)
{
v.push_back(q.front());
q.pop();
int t = q.front();
q.pop();
q.push(t);
}
int r = q.front();
printf("Discarded cards:");
for(int i=0; i
题目链接:10763 - Foreign Exchange
代码:
#include
#include
#include
#include
题目链接:10391 - Compound Words
代码:
#include
#include
#include
#include
using namespace std;
set s, ans;
string a;
int main()
{
while(cin >> a) s.insert(a);
set::iterator it;
//枚举切分
for(it=s.begin(); it!=s.end(); it++)
{
string b = *it, b1, b2;
for(int i=1; i
题目链接:1595 - Symmetry
代码:
#include
#include
#include
#include
using namespace std;
const int MAX = 1005;
struct Node
{
double x, y;
Node(double x=-1, double y=-1):x(x), y(y){}
bool operator < (const Node &A) const
{
if(x==A.x)
return y b;
int main()
{
int n, T;
scanf("%d", &T);
while(T--)
{
scanf("%d", &n);
for(int i=0; i
题目链接:12100 - Printer Queue
代码:
#include
#include
#include
using namespace std;
struct Node
{
int v, f;//v是优先级值,f标记被选中的元素
Node(int v=-1, int f=-1):v(v), f(f){}
};
queue q;
priority_queue q1;//默认是大顶堆
int main()
{
int T, n, m, t;
scanf("%d", &T);
while(T--)
{
//注意初始化清空队列
while(!q.empty()) q.pop();
while(!q1.empty()) q1.pop();
scanf("%d%d", &n, &m);
//输入并近队列
for(int i=0; i
题目链接:1596 - Bug Hunt
参考博文:LLGEMINI