hdu1200-二维数组问题

本文介绍了一个用于处理复杂字符串排列的算法。该算法能够根据输入的方向(正序或逆序)来重新排列字符串,并最终按列输出结果。通过这种方式,可以解决特定类型的字符串处理问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1200

题意有点难懂(´⌒`。)  


t o i o y          --------→                      |    |
h p k n n        ←--------                      |    |
e l e a i          --------→                      |    |
r a h s g         ←--------                      |    |
e c o n h        --------→                      |    |
s e m o t        ←--------                      |    |
n l e w x         --------→                     ↓   ↓
                      输入方向                输出方向





#include<iostream>  
#include<string>  
using namespace std;
int main()  
{  
	int n,x;
	string str1;
	char str[100][20] = {0};
	while (cin>>n && n!=0)
	{
		getchar();
		getline(cin,str1);
		x = 0;
		for (int j = 0; j <str1.length()/n; j++)
		{
			if(j%2 == 0)		
				for (int i = 0;i<n;i++)          
				{
					str[j][i] = str1[x++];
				}
			else
				for(int i = n-1;i>=0;i--)           //奇数行与偶数行一定要相同,此处不能写for(i = n;i>0;i++)
				{
					str[j][i] = str1[x++];
				}
		}
		
		for (int i = 0;i<n;i++)
		{
			for (int j = 0; j <str1.length()/n; j++)
			{
				cout<<str[j][i];
			}
		}
		cout<<endl;
	}
	return 0;  
}  


### 关于HDU 4393 扔钉子问题的分析 HDU 4393 “Throwing Nails” 是一道涉及几何计算和模拟的经典题目。虽然当前引用未提及该具体编号,但从其他相似题目的描述可以推测其核心逻辑[^1]。 #### 题目概述 假设在一个二维平面上有若干个圆盘(nails),每个圆盘由其中心坐标 (x, y) 和半径 r 定义。给定一系列投掷点的位置 (px, py),判断这些点是否落在任意一个圆盘上或者内部。如果某一点位于多个圆盘范围内,则需记录覆盖它的所有圆盘数量并输出最大值。 以下是解决此问题的一种方法: #### 解决方案设计 为了高效处理大量输入数据,采用如下策略: 1. **预处理阶段**: 将所有的钉子信息存储到结构体数组中以便后续访问。 2. **查询优化**: 对每次询问执行快速距离比较操作来决定它属于哪些区域。 下面是基于C++实现的一个可能版本: ```cpp #include <bits/stdc++.h> using namespace std; struct Nail { double x; double y; double r; // radius of nail }; int main() { int n, q; cin >> n >> q; vector<Nail> nails(n); for(auto &na : nails){ cin>> na.x >> na.y >> na.r; } while(q--){ double px,py; cin>>px>>py; int count=0; for(int i=0;i<n;i++){ double dist_sq = pow(px-nails[i].x,2)+pow(py-nails[i].y,2); if(dist_sq<=pow(nails[i].r,2)){ ++count; } } cout<<count<<"\n"; } return 0; } ``` 上述代码实现了基本功能,即读取钉子位置及其范围,并针对每组查询统计符合条件的数量[^2]。 #### 性能考量 由于本算法的时间复杂度为O(N*Q),当N与Q均较大时可能会超时。因此,在实际应用中可考虑进一步优化手段如KD树或其他空间划分技术降低单次查找成本[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值