F - Circular Sequence

本文介绍了一个通过字符串元素移位并进行字典序比较的方法来寻找一个字符串所有可能排列中的最小字典序。使用C++实现,通过循环将字符串首字符移至末尾的方式遍历所有排列,并用strcmp()函数比较各排列的字典序。

think:
1字符串元素移位+字符串字典序比较

vjudge题目链接

以下为Accepted代码

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int T, i, k, len;
    char c, st1[104], st2[104];
    scanf("%d", &T);
    getchar();
    while(T--)
    {
        scanf("%s", st1);
        len = strlen(st1);
        strcpy(st2, st1);
        for(i = 0; i < len; i++)
        {
            c = st1[0];
            for(k = 0; k < len-1; k++)
                st1[k] = st1[k+1];
            st1[len-1] = c;
            if(strcmp(st1, st2) < 0)
                strcpy(st2, st1);
        }
        printf("%s\n", st2);
    }
    return 0;
}
--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) Cell In[11], line 1 ----> 1 import brainpy as bp 2 import brainpy.math as bm 3 import numpy as np File d:\Anaconda\envs\brainpy-env\Lib\site-packages\brainpy\__init__.py:7 4 __version__ = "2.6.0" 6 # fundamental supporting modules ----> 7 from brainpy import errors, check, tools 9 try: 10 import jaxlib File d:\Anaconda\envs\brainpy-env\Lib\site-packages\brainpy\check.py:6 3 from functools import wraps, partial 4 from typing import Union, Sequence, Dict, Callable, Tuple, Type, Optional, Any ----> 6 import jax 7 import numpy as np 8 import numpy as onp File d:\Anaconda\envs\brainpy-env\Lib\site-packages\jax\__init__.py:25 22 from jax.version import __version_info__ as __version_info__ 24 # Set Cloud TPU env vars if necessary before transitively loading C++ backend ---> 25 from jax._src.cloud_tpu_init import cloud_tpu_init as _cloud_tpu_init 26 try: 27 _cloud_tpu_init() File d:\Anaconda\envs\brainpy-env\Lib\site-packages\jax\_src\cloud_tpu_init.py:17 15 import os 16 from jax import version ---> 17 from jax._src import config 18 from jax._src import hardware_utils 20 running_in_cloud_tpu_vm: bool = False File d:\Anaconda\envs\brainpy-env\Lib\site-packages\jax\_src\config.py:27 24 import threading 25 from typing import Any, Generic, NamedTuple, NoReturn, Protocol, TypeVar, cast ---> 27 from jax._src import lib 28 from jax._src.lib import guard_lib 29 from jax._src.lib import jax_jit File d:\Anaconda\envs\brainpy-env\Lib\site-packages\jax\_src\lib\__init__.py:76 71 return _jaxlib_version 74 version_str = jaxlib.version.__version__ 75 version = check_jaxlib_version( ---> 76 jax_version=jax.version.__version__, 77 jaxlib_version=jaxlib.version.__version__, 78 minimum_jaxlib_version=jax.version._minimum_jaxlib_version) 80 # Before importing any C compiled modules from jaxlib, first import the CPU 81 # feature guard module to verify that jaxlib was compiled in a way that only 82 # uses instructions that are present on this machine. 83 import jaxlib.cpu_feature_guard as cpu_feature_guard AttributeError: partially initialized module 'jax' has no attribute 'version' (most likely due to a circular import)
08-21
### STM32F072 ADC with DMA Configuration For the STM32F072 microcontroller, configuring the Analog-to-Digital Converter (ADC) to work alongside Direct Memory Access (DMA) involves several key steps that ensure efficient data acquisition without CPU intervention. The setup process includes proper initialization of both peripherals as well as ensuring correct timing configurations. #### Clock Configuration The first step is setting up the system clock correctly so that it meets the requirements for running ADC at its optimal performance level. This typically means adjusting the prescaler values within RCC settings according to specific application needs[^1]. #### ADC Settings When initializing the ADC module on an STM32 device like F072 series, one must pay attention not only to standard parameters such as resolution but also advanced features including continuous conversion mode which can be beneficial when using DMA transfers: ```c hadc.Instance = ADC1; hadc.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4; // Adjust based on your project's requirement. hadc.Init.Resolution = ADC_RESOLUTION_12B; hadc.Init.DataAlign = ADC_DATAALIGN_RIGHT; hadc.Init.ScanConvMode = DISABLE; // Single channel or multiple channels? hadc.Init.EOCSelection = ADC_EOC_SEQ_CONV; // End-of-conversion selection hadc.Init.LowPowerAutoWait = DISABLE; hadc.Init.ContinuousConvMode = ENABLE; // Continuous conversions are necessary for DMA operation hadc.Init.NbrOfConversion = 1; // Number depends upon how many channels you want to sample simultaneously hadc.Init.DiscontinuousConvMode = DISABLE; if (HAL_ADC_Init(&hadc) != HAL_OK){ Error_Handler(); } ``` This configuration ensures continuous sampling from a single channel while allowing seamless integration into larger applications where real-time processing might occur concurrently. #### DMA Setup To enable automatic transfer between memory buffers and peripheral registers via DMA controller during each completed analog-digital conversion cycle, configure the following aspects carefully: ```c hdma_adc1.Instance = DMA1_Channel1; hdma_adc1.Init.Direction = DMA_PERIPH_TO_MEMORY; hdma_adc1.Init.PeriphInc = DMA_PINC_DISABLE; hdma_adc1.Init.MemInc = DMA_MINC_ENABLE; hdma_adc1.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD; hdma_adc1.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD; hdma_adc1.Init.Mode = DMA_CIRCULAR; // Circular buffer mode keeps overwriting old samples with new ones continuously hdma_adc1.Init.Priority = DMA_PRIORITY_HIGH; if(HAL_DMA_Init(&hdma_adc1)!= HAL_OK){ Error_Handler(); } __HAL_LINKDMA(&hadc,DMA_Handle, hdma_adc1); // Enable DMA request after last transfer (Single-ADC mode) __HAL_ADC_ENABLE_IT(&hadc, ADC_IT_EOS); /* Start ADC regular group conversion */ if (HAL_ADC_Start_DMA(&hadc,(uint32_t*)aBuffer, BUFFER_SIZE) != HAL_OK){ /* Start Conversation error */ Error_Handler(); } ``` In this snippet, circular buffering has been enabled through `DMA_MODE_CIRCULAR`, meaning once all elements have been transferred they will start again from beginning automatically – ideal for ongoing monitoring tasks requiring constant updates. Additionally, enabling interrupts (`ADC_IT_EOS`) allows handling events asynchronously whenever end-of-sequence conditions arise. --related questions-- 1. How does changing the ADC clock prescaler affect conversion accuracy in STM32 devices? 2. What considerations should be taken into account when selecting DMA priorities among different peripherals sharing same resources? 3. Can you explain more about non-blocking operations involving ADCs configured under CubeMX framework? 4. Is there any difference between using polling versus interrupt-driven methods for managing ADC results? 5. Are there special precautions needed when implementing multi-channel scans combined with DMA transfers?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值