首 页 行业热点 新车 试驾评测 养车用车 车型库

python习题(算法)

发布网友

我来回答

7个回答

懂视网

3 How to compete in ACM ICPC,Peter,peter@neerc.ifmo.ru How to win ACM ICPC,Michael,michael@neerc.ifmo.ru Notes from ACM ICPC champion,Michael,michael@neerc.ifmo.ru 2 3 1,Peter,peter@neerc.ifmo.ru 2,Michael,michael@neerc.ifmo.ru

(二)样例输出

NO
2 3  //这两行中出现数据冗余
2 3  //冗余出现在上面两行的这两列中
YES

二:代码实现

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
#include <sstream>
#include <set>
#include <map>
#include <vector>
#include <algorithm>

using namespace std;

vector<string> split(string source, string pattern)
{
 vector<string> res;
 int spos = 0, epos, p_len = pattern.length() - 1,s_len = source.length()-1;
 source += pattern;
 char col = ‘1‘;
 while (spos<s_len && (epos = source.find(pattern,spos))&&epos!=string::npos)
 {
 stringstream stream;
 stream << col++;  //在末尾加上列号,可以防止出现因为不同列数据重复现象
 res.push_back((source.substr(spos, epos - spos)).append(stream.str()));
 spos = epos + 1;
 }
 return res;
}

int main()
{
 FILE *fp = freopen("data5_9.in", "r", stdin);
 freopen("data5_9.out", "w", stdout);

 string line;
 int row, col;

 while ((cin >> row)&&row!=0)
 {
 //获取行列数
 cin >> col;

 vector<string> str_vec;
 set<string> str_set;
 map<string, int> str_map;
 vector<int> res; //保存两行,一列重复

 for (int r = 1; r <= row; r++)
 {
  getchar();
  getline(cin, line); //重点使用
  
  str_vec = split(line, ","); //由于没有split字符串分割函数,使用find和substr进行分割
  
  vector<string>::iterator iter = str_vec.begin(); //进行迭代插入
  int c = 1;
  for (; iter != str_vec.end(); iter++)
  {
  if (!str_set.count(*iter))
  {
   str_set.insert(*iter);
   str_map[*iter] = r * 10 + c++;
  }
  else //出现同一列重复
  {
   int r_r = (str_map[*iter] / 10)*10 + r;  //23表示第2,3行重复
   res.push_back(r_r*10+c++); //将重复的行列添加到res映射中
  }
  }
 }

 if (res.empty()) //进行结果输出
  cout << "YES" << endl;
 else
 {
  cout << "NO" << endl;
  int r_r = res.front();
  cout << r_r / 100 << ‘ ‘ << r_r / 10 % 10 << endl; //输出行
  for (vector<int>::iterator it = res.begin(); it != res.end(); it++)
  cout << *it % 10 << " "; //输出列
  cout << endl;
 }
 }

 freopen("CON", "r", stdin);
 freopen("CON", "w", stdout);
 return 0;
}

 

算法习题---5.9数据库(Uva1592)

标签:不同   int   cin   iostream   begin   检测   算法   append   mpi   

热心网友

回答稍等Copyright © 1999-2020, CSDN.NET, All Rights Reserved

 登录



DY_浅陌初心

关注

python算法题 原创

2018-06-23 10:44:47

 2点赞

DY_浅陌初心 

码龄4年

关注

1 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的四位数?都是多少?

for a in range( 1, 5):

for b in range( 1, 5):

for c in range( 1, 5):

for d in range( 1, 5):

if(a!=b and a!=c and a!=d and b!=c and b!=d and c!=d):

print(a,b,c,d)

运行结果

注意:

start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);

stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5

step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

2 题目:打印出国际象棋图

分析:行为0-7,列为0-7,当行列之和为奇数时为黑色

import sys

for i in range( 8):

for j in range( 8):

if (i + j) % 2 != 0:

print( chr( 219), end= '')

print( chr( 219), end= '')

else: print( ' ', end= '')

print( ' \n ', end= '')

3题目: 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数

判断是否为字母:str.isspace

判断是否为空格:str.isalpha

判断是否为数字:str.isdigit

判断是否为其他字符:前三种都不是就是其他字符

输入: str = input( 'please input a string:\n' )

space = 0

digit= 0

alpha= 0

other= 0

str = "12jdfj wjdf dfj wejwi jsdifj,,nfiraj "

提问错

回答。

热心网友

这个就是循环2n次呀。先是让x=x+c,在把c更新一下c=c+b,最后让b=b+a,这就完成一次循环了。
不过你给的程序不完整。

热心网友

付费内容限时免费查看回答1 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的四位数?都是多少?

for a in range( 1, 5):

for b in range( 1, 5):

for c in range( 1, 5):

for d in range( 1, 5):

if(a!=b and a!=c and a!=d and b!=c and b!=d and c!=d):

print(a,b,c,d)

step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

(1)将A塔上编号1~

热心网友

根据每一次循环之后x的值: 1,8,27,.....
可以得到规律X[i] = i的立方 i = 1, 2, 3, 4....i是循环次数
所以程序的功能是计算2*n的结果的立方

热心网友

这个也要问,
实在不会就写个程序跑一遍呗

热心网友

程序不对,n 没有定义啊

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com