C++从零单排(4)-ACM二-创新互联

继续刷水题!!!

创新互联建站-专业网站定制、快速模板网站建设、高性价比荆州网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式荆州网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖荆州地区。费用合理售后完善,10多年实体公司更值得信赖。

这次要搞zoj的题目,Let's go!

Quicksum

http://acm.zju.edu.cn/网上第 2812 题

Quicksum 是一行字符串(数据包)中每个字符的位置与该字符的值的乘积之和。空格
的值是 0,字母的值等于它在字母表中的位置。所以,A 的值是 1,B 的值是 2,依此类推,
Z 的值是 26。下面两个例子是求“ACM”和“MID CENTRAL”的 Quicksum:
ACM: 1*1 + 2*3 + 3*13 = 46
MID CENTRAL: 1*13 + 2*9 + 3*4 + 4*0 + 5*3 + 6*5 + 7*14 + 8*20 + 9*18 + 10*1 +
11*12 = 650

思路:用getline全部读进来,然后挨个处理就可以了。

C++实现(注意ifstream cin("aaa.txt");是在调试的时候才用的,提交代码的时候需要注释掉):

#include  #include   using namespace std;  int main() {     ifstream cin("aaa.txt");     char ch[256];     int i = 1;     int sum = 0;    while (cin.getline(ch,256))     {         if(ch[0] == '#') break;         for(int i = 0;ch[i] != '\0';i++)         {             if(ch[i] != ' ') sum = sum+(i+1)*(ch[i]-64);         }         cout<

Encoding

http://acm.zju.edu.cn/网上第 2478 题

把一个字符串中连续重复的字母从左到右写成 kX 的形式,如果 k 是 1,那么,1 就要省略。

Sample Input
2
ABC
ABBCCC
Sample Output
ABC
A2B3C

思路:不断读取,不断判断是否与上一个字母相同,根据结果输出。

C++实现:

#include  #include   using namespace std;  int main() {     //ifstream cin("aaa.txt");     string s,t;     int n;     cin >> n;     for(int i=0;i>s;         int c = 0;         t = s[0];         int tmp = 0;         for(int j=0;j

Abbreviation

http://acm.zju.edu.cn/网上第 2947 题

比较两个缩写词是否相同,而缩写词又是从一个包含多个单词的名字中合成的。
每次读入一个单词,然后取出它的第一个字母,连接在字符串上,就组成了一个缩写词。

Sample Input
3
4
Super Harddisc Drive Cooler
4
Spade Heart Diamond Club
3
Shen Guang Hao
3
Shuai Ge Hao
3
Cai Piao Ge
4
C P C S


Sample Output
SAME
SAME
DIFFERENT

思路:挨个读取单词,将首字母存在string中,最后进行比较。

C++实现:

#include  #include  #include   using namespace std;  int main() {     ifstream cin("aaa.txt");     string s,ssa,ssb;     int t,n,m;     cin>>t;     for(int i=0;i>n;         for(int j=0;j>s;             ssa = ssa + s[0];         }         cin>>m;         for(int k=0;k>s;             ssb = ssb+s[0];         }         if(ssa.compare(ssb)==0) printf("SAME\n");         else printf("DIFFERENT\n");         ssa = "";         ssb = "";     }     return 0; }

printf比cout速度快!

Image Transformation

http://acm.zju.edu.cn/网上第 2857 题

把 RGB 图像转换为灰度图像的一
种最简便的方法是:把一个像素的红、绿和蓝的值都设置为一个相同的值(即(r+g+b)/3,
这里假定(r+g+b)总能被 3 整除)。
你决定编写一个程序来测试这种方法的有效性。

思路:统计每个通道的值,除以像素的个数。

C++实现:

#include  #include  #include  #include  using namespace std;  int main() {     //ifstream cin("aaa.txt");     vector r;     vector g;     vector b;     int n,m;     int rr,gg,bb;     int w = 0;    while(cin>>n>>m)     {         r.clear();         g.clear();         b.clear();        w++;         if(n==0 && m==0) break;         for(int i=0;i>rr;             r.push_back(rr);         }         for(int j=0;j>gg;             g.push_back(gg);         }          for(int k=0;k>bb;             b.push_back(bb);         }         cout<<"Case "<

Error Correction

http://acm.zju.edu.cn/网上第 1949 题

一个布尔矩阵有一种奇偶性,即该矩阵所有行和所有列的和都是一个偶数。

编写一个程序,读入这个矩阵并检查它是否具有奇偶性。如果没有,你的程序应当再检查一下它是否可以通过修改一位(把 0 修改为 1,把 1 修改为 0)来使它具有奇偶性。如果不可能,这个矩阵就被认为是破坏了。

思路:统计矩阵中行和列中1的个数,判断是否为偶数。

都为偶数的话,说明有奇偶性,否则再判断,当只有一行的和是奇数且只有一列的和为奇数,那么,将这两行交点处的元素修改一下,就变成具有 parity property(奇偶性)的矩阵了。这里还要清楚的一点是,在一个矩阵中,任何一行与任何一列都有且仅有一个交点。

C++实现:

#include  #include  #include  #include  using namespace std; int matrix[100][100]; int SL[100]; int SC[100];  int main() {     ifstream cin("aaa.txt");     int i,j,PL,PC,CountL,CountC;     int n;    while(cin>>n)     {         if(n==0) break;         PL = 0;         PC = 0;         CountL = 0;         CountC = 0;         for(i=0;i>matrix[i][j];                 SL[i]=SL[i]+matrix[i][j];                 SC[j]=SC[j]+matrix[i][j];             }         }         for(i=0;i

打完收工,故事还在继续。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文标题:C++从零单排(4)-ACM二-创新互联
标题URL:http://pwwzsj.com/article/pidhg.html